Здравствуйте!В чем проблема несовместимости макроса 2003 и 20016 версии? На флэшке и на диске есть одинаковый рабочий файл в папке. В зависимости от того с каким файлом сейчас идет работа, при закрытии его макрос должен проверить наличие флэшки и сохранить этот файл либо на флэшку (если был открыт файл на диске), либо на диск. Этот макрос отлично работает в 2003 версии, а 2016 выдает ошибку и подсвечивает-left
[vba]
Код
Sub Проверка_на_флэшку()
'Stop Dim x As String, y As String, z As String, flash As String, a As String
x = "F:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ.xls" 'Путь и имя файла y = "G:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ.xls" z = "H:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ.xls" a = Left(ActiveWorkbook.Path, 3) 'Буква диска рабочего открытого файла If Dir(x) <> "" Then flash = Left(x, 3) 'Если файл на флэшке найден то переменной присваивается буква диска If Dir(y) <> "" Then flash = Left(y, 3) If Dir(z) <> "" Then flash = Left(z, 3) 'Если флэшка есть If flash <> "" Then 'Если открыт файл с флэшки If a = flash Then If MsgBox("ШЕФ! ВЫ ХОТИТЕ СОХРАНИТЬ ЭТОТ ФАЙЛ НА ДИСК?", vbYesNo) = vbYes Then ActiveWorkbook.SaveCopyAs "C:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ1.xls" End If End If 'Если открыт файл на диске If a = "C:\" Then If MsgBox("ШЕФ! ВЫ ХОТИТЕ СОХРАНИТЬ ЭТОТ ФАЙЛ НА ФЛЭШКУ?", vbYesNo) = vbYes Then ActiveWorkbook.SaveCopyAs flash & "РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ1.xls" End If End If End If
End Sub
[/vba] Файл не прикладываю, т.к. ,думаю, что в нем нет необходимости. Спасибо!
Здравствуйте!В чем проблема несовместимости макроса 2003 и 20016 версии? На флэшке и на диске есть одинаковый рабочий файл в папке. В зависимости от того с каким файлом сейчас идет работа, при закрытии его макрос должен проверить наличие флэшки и сохранить этот файл либо на флэшку (если был открыт файл на диске), либо на диск. Этот макрос отлично работает в 2003 версии, а 2016 выдает ошибку и подсвечивает-left
[vba]
Код
Sub Проверка_на_флэшку()
'Stop Dim x As String, y As String, z As String, flash As String, a As String
x = "F:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ.xls" 'Путь и имя файла y = "G:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ.xls" z = "H:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ.xls" a = Left(ActiveWorkbook.Path, 3) 'Буква диска рабочего открытого файла If Dir(x) <> "" Then flash = Left(x, 3) 'Если файл на флэшке найден то переменной присваивается буква диска If Dir(y) <> "" Then flash = Left(y, 3) If Dir(z) <> "" Then flash = Left(z, 3) 'Если флэшка есть If flash <> "" Then 'Если открыт файл с флэшки If a = flash Then If MsgBox("ШЕФ! ВЫ ХОТИТЕ СОХРАНИТЬ ЭТОТ ФАЙЛ НА ДИСК?", vbYesNo) = vbYes Then ActiveWorkbook.SaveCopyAs "C:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ1.xls" End If End If 'Если открыт файл на диске If a = "C:\" Then If MsgBox("ШЕФ! ВЫ ХОТИТЕ СОХРАНИТЬ ЭТОТ ФАЙЛ НА ФЛЭШКУ?", vbYesNo) = vbYes Then ActiveWorkbook.SaveCopyAs flash & "РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ1.xls" End If End If End If
End Sub
[/vba] Файл не прикладываю, т.к. ,думаю, что в нем нет необходимости. Спасибо!pechkin
Здравствуйте. В какой строке кода left подсвечивает.На лицо конфликт в самом коде.Вы же весь код не показали. Обойти можно так.[vba]
Код
Set FSO = CreateObject("Scripting.FileSystemObject") a = FSO.GetDriveName(ActiveWorkbook.Path) x = "F:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ.xls" y = "G:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ.xls" Z = "H:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ.xls" flash = "" If FSO.FileExists(x) Then flash = FSO.GetDriveName(x) End If If FSO.FileExists(y) Then flash = FSO.GetDriveName(y) End If If FSO.FileExists(Z) Then flash = FSO.GetDriveName(Z) End If Set FSO = Nothing
[/vba]
Здравствуйте. В какой строке кода left подсвечивает.На лицо конфликт в самом коде.Вы же весь код не показали. Обойти можно так.[vba]
Код
Set FSO = CreateObject("Scripting.FileSystemObject") a = FSO.GetDriveName(ActiveWorkbook.Path) x = "F:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ.xls" y = "G:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ.xls" Z = "H:\РАСЧЕТ ТЕПЛОВОЙ ЭНЕРГИИ.xls" flash = "" If FSO.FileExists(x) Then flash = FSO.GetDriveName(x) End If If FSO.FileExists(y) Then flash = FSO.GetDriveName(y) End If If FSO.FileExists(Z) Then flash = FSO.GetDriveName(Z) End If Set FSO = Nothing
Конечно. Если Вы в процессе отладки макроса, то она и не будет работать. Нужно сначала прекратить работу макроса, а потом уже лезть вовнутря Завершите работу макроса кнопкой Ресет (на панели VBA) Посмотрите, какие библиотеки включены. Засканьте и покажите Напишите [vba]
Код
ppp_=ActiveWorkbook.Path
[/vba]посмотрите, чему равна ррр_ [vba]
Код
aaa_=left(ppp_,3)
[/vba]посмотрите, чему равна ааа_
В 2013 у меня Left нормально проскакивает. 2016 дома нет
Конечно. Если Вы в процессе отладки макроса, то она и не будет работать. Нужно сначала прекратить работу макроса, а потом уже лезть вовнутря Завершите работу макроса кнопкой Ресет (на панели VBA) Посмотрите, какие библиотеки включены. Засканьте и покажите Напишите [vba]
Код
ppp_=ActiveWorkbook.Path
[/vba]посмотрите, чему равна ррр_ [vba]
Код
aaa_=left(ppp_,3)
[/vba]посмотрите, чему равна ааа_
В 2013 у меня Left нормально проскакивает. 2016 дома нет_Boroda_
Здравствуйте! Сделал файл пример с вышеупомянутым макросом в 2003. Работает и в 2016. Значит порча именно в конкретном файле. Буду что-то пробовать. Спасибо!
Здравствуйте! Сделал файл пример с вышеупомянутым макросом в 2003. Работает и в 2016. Значит порча именно в конкретном файле. Буду что-то пробовать. Спасибо!pechkin
Здравсвуйте! К сожалению, я не обладаю теоритическими знаниями, все делалось методом научного(или ненаучного) тыка. Подсвеченная строка показывает ошибку, а что дальше?
Здравсвуйте! К сожалению, я не обладаю теоритическими знаниями, все делалось методом научного(или ненаучного) тыка. Подсвеченная строка показывает ошибку, а что дальше? pechkin
Спасибо! Заработало. Что это было. Лишняя библиотека. А как будет на 2003 Прикладываю скан библиотек на компьютере с 2003 офисом. Разница в 2 штуки (еще Microsoft forms2) Тоже отключить?
Спасибо! Заработало. Что это было. Лишняя библиотека. А как будет на 2003 Прикладываю скан библиотек на компьютере с 2003 офисом. Разница в 2 штуки (еще Microsoft forms2) Тоже отключить?pechkin