Подскажите пожалуйста, цель следующая, есть файл с паролем на редактирование, необходимо, чтобы он открывался по времени под паролем для правки, далее обновлял все внешние и внутренние подключения, сохранялся и закрывался, у меня получилось так, но не очень работает:
Код
Sub MyMacro()
Application.ScreenUpdating = False
Set wb = ThisWorkbook
Workbooks.Open Filename:= _
"C:\Users\ЯЯЯЯЯЯЯЯЯ\Desktop\Òåñò_äëÿ_îáíîâëåíèÿ_ñ_ïàðîëåì.xlsm", Password:="12345", WriteResPassword:="12345"
Set wb1 = ActiveWorkbook
wb.Activate
ActiveWorkbook.RefreshAll
wb.Save
wb1.Close
Application.ScreenUpdating = True
End Sub
При запуске он все равно запрашивает у меня пароль для входа в файл для редактирования, хотя в макросе я его учел, вот не могу понять как это исправить.
Изменил запрос таким образом, все процедуры выполняются, но все равно на старте требует ввести "пароль" который по идее у меня уже прописан и все должно запускаться на автомате:
Код
Private Sub Workbook_Open()
Call MyMacroPassword
ActiveWorkbook.Close SaveChanges:=False
End Sub
Dim TimeToRun
Sub MyMacroPassword()
Workbooks.Open Filename:= _
"C:\Users\ЧЧЧЧЧЧЧЧЧЧЧ\Desktop\Òåñò_äëÿ_îáíîâëåíèÿ_ñ_ïàðîëåì.xlsm", Password:="12345", WriteResPassword:="12345"
Call MyMacro
End Sub
Sub MyMacro()
ThisWorkbook.RefreshAll
ThisWorkbook.Save
ThisWorkbook.Close
Call NextRun
End Sub
Sub NextRun()
TimeToRun = TimeValue("17:05:00")
Application.OnTime TimeToRun, "MyMacro"
End Sub
Sub Start()
Call NextRun
End Sub
Sub Finish()
Application.OnTime TimeToRun, "MyMacro", , False
End Sub
Макрос не будет выполняться, пока файл не откроется. Так что Вам нужно два файла: первый файл (без пароля на открытие) будет запускаться и открывать второй файл (с паролем).
sokol92, т.е. логика такая, я макрос #1 помещаю в Доп. файл к основному, а в основном по сути ничего прописывать и не надо будет, он автоматом отработает процедуры указанные в Доп. файле?
1. Записываете макрос (например, MyMacro), который открывает "Основной" файл, вносит в него необходимые изменения и закрывает Основной файл. 2. В обработчике события открытия книги Workbook_Open вызываете MyMacro желательно через конструкцию
Код
Application.OnTime Now, "MyMacro"
О причине использования OnTime см. этот ответ Владимира (ZVI) - для того, чтобы дождаться полной загрузки Excel.
Что "все так"? Что происходит при открытии вложенного файла? Если Вы не видите отладчик, то начинайте разбираться с параметрами, которые отвечают за безопасность макросов, доступ к VBE проекту и т.п.
Private Sub Workbook_Open()
Application.OnTime Now, "MyMacroPassword"
End Sub
и макрос:
Код
Sub MyMacroPassword()
Workbooks.Open Filename:= _
"C:\Users\a.ihsanov\Desktop\Тест_для_обновления_с_паролем.xlsm", WriteResPassword:="QWERTY"
ThisWorkbook.RefreshAll
ThisWorkbook.Save
ThisWorkbook.Close
End Sub
Но, макрос только открыл файл с паролем, этапы которые должны его обновить, сохранить и закрыть почему то не сработали
ThisWorkbook - книга, в которой записан код макроса (в предыдущей терминологии - Доп. файл). А обновлять и сохранять нужно Основной файл. Сразу после открытия основного файла он становится текущей книгой, к которой можно обращаться через переменную ActiveWorkbook (либо, что правильнее, использовать возвращаемое значение метода Workbooks.Open).