Все, теперь понятно.Должно быть не Апдейт, а Книга("ооо").Модуль("ааа").Апдейт
Ошибка возникает в макросе, в котором указано время (9:05,9:35 и т.д.), который лежит в "ЭтаКнига". А Вы рекомендуете вносить изменения в основной макрос - "Update_", лежащий в модуле.
Hugo Ну, хотя бы подскажите, на каком этапе возникает ошибка? Судя по тому, что пишет Борода:
Все, теперь понятно.Должно быть не Апдейт, а Книга("ооо").Модуль("ааа").Апдейт
Ошибка возникает в макросе, в котором указано время (9:05,9:35 и т.д.), который лежит в "ЭтаКнига". А Вы рекомендуете вносить изменения в основной макрос - "Update_", лежащий в модуле.ArkaIIIa
_Boroda_ решил что макрос вызывается из другой книги. Но т.к. он срабатывает, значит это ОК. Но ошибка при обновлении связей - вот это место и нужно смотреть. Может там какая-то связь не может обновиться?
_Boroda_ решил что макрос вызывается из другой книги. Но т.к. он срабатывает, значит это ОК. Но ошибка при обновлении связей - вот это место и нужно смотреть. Может там какая-то связь не может обновиться?Hugo
_Boroda_ решил что макрос вызывается из другой книги.
Да, именно так я и подумал. Вернее, что при активной книге1 запускается макрос в книге2, который запускает второй макрос в книге2 Попробуйте положить макрос Апдейт в модуль книги ("Эта книга") и переписать строку обновления так [vba]
_Boroda_ решил что макрос вызывается из другой книги.
Да, именно так я и подумал. Вернее, что при активной книге1 запускается макрос в книге2, который запускает второй макрос в книге2 Попробуйте положить макрос Апдейт в модуль книги ("Эта книга") и переписать строку обновления так [vba]
Hugo У меня макрос "Update_" еще привязан к кнопке. И по кнопке он срабатывает безошибочно. Все связи обновляются корректно. Но при нажатии на кнопку я ведь нахожусь в той самой книге, в которой и лежат оба макроса. Так что, может быть в "Update_" где-то еще нужно указать название книги в которой он должен срабатывать? Например, где-то в [vba]
Код
Dim R As Range Dim rngX As Range Dim X As Integer
[/vba] ? Но у меня не получается это сделать.
Hugo У меня макрос "Update_" еще привязан к кнопке. И по кнопке он срабатывает безошибочно. Все связи обновляются корректно. Но при нажатии на кнопку я ведь нахожусь в той самой книге, в которой и лежат оба макроса. Так что, может быть в "Update_" где-то еще нужно указать название книги в которой он должен срабатывать? Например, где-то в [vba]
Код
Dim R As Range Dim rngX As Range Dim X As Integer
[/vba] ? Но у меня не получается это сделать.ArkaIIIa
Сделайте макет - книга с онтайм, книга с связями, книга с которой связи. Всё в один архив - и посмотрим. В Workbooks("Q1.5.xlsm").UpdateLink не ошиблись с именем файла? Та книга открыта?
Сделайте макет - книга с онтайм, книга с связями, книга с которой связи. Всё в один архив - и посмотрим. В Workbooks("Q1.5.xlsm").UpdateLink не ошиблись с именем файла? Та книга открыта?Hugo
[/vba] Т.е. в книгу "Q1.5.xlsm", на лист "РМ", в ячейку (27,11) вставляется дата и время последнего обновления файла "STALE_APP_REPORT.xls". Книга Q1.5 - открыта. Книга STALE_APP_REPORT - нет. Она тоже должна быть открыта? Но с неё же ничего не копируется.
[/vba] Т.е. в книгу "Q1.5.xlsm", на лист "РМ", в ячейку (27,11) вставляется дата и время последнего обновления файла "STALE_APP_REPORT.xls". Книга Q1.5 - открыта. Книга STALE_APP_REPORT - нет. Она тоже должна быть открыта? Но с неё же ничего не копируется.ArkaIIIa
Попробуйте положить макрос Апдейт в модуль книги ("Эта книга") и переписать строку обновления так Application.OnTime TimeValue("13:05:00"), Workbooks("Q1.5.xlsm")."Update_"
Макрос "Update_" у меня лежит в модуле книги "Q1.5.xlsm", в которой он и должен работать. Строку подобным образом уже пробовал перезаписать, но она выделяется красным.
Попробуйте положить макрос Апдейт в модуль книги ("Эта книга") и переписать строку обновления так Application.OnTime TimeValue("13:05:00"), Workbooks("Q1.5.xlsm")."Update_"
Макрос "Update_" у меня лежит в модуле книги "Q1.5.xlsm", в которой он и должен работать. Строку подобным образом уже пробовал перезаписать, но она выделяется красным.ArkaIIIa
_Boroda_ Поясню. Нет какой-то конкретной третьей книги, в которой я точно буду сидеть в момент срабатывания макроса, и в модуль которой можно было бы продублировать "Update_". На момент срабатывания макроса я могу сидеть в условной книге3, Новой книге, Explorer, Lotus, где угодно, при этом в ключевой для меня книге "Q1.5" должны корректно отрабатываться вышеупомянутые макросы.
_Boroda_ Поясню. Нет какой-то конкретной третьей книги, в которой я точно буду сидеть в момент срабатывания макроса, и в модуль которой можно было бы продублировать "Update_". На момент срабатывания макроса я могу сидеть в условной книге3, Новой книге, Explorer, Lotus, где угодно, при этом в ключевой для меня книге "Q1.5" должны корректно отрабатываться вышеупомянутые макросы.ArkaIIIa
Private Sub Workbook_Open() Application.OnTime TimeValue("09:05:00"), "Update_" Application.OnTime TimeValue("09:35:00"), "Update_" ...
[/vba]ниже, после End Sub вставьте еще и [vba]
Код
Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls" iFileDateTime_1 = FileDateTime(Path_1) ...
[/vba] а в Модуль1 весь код сотрите и вместо Application.OnTime TimeValue("09:35:00"), "Update_" напишите Application.OnTime TimeValue("09:35:00"), Workbooks("Q1.5.xlsm")."Update_"
Да нет, не так. Туда, где у Вас написано [vba]
Код
Private Sub Workbook_Open() Application.OnTime TimeValue("09:05:00"), "Update_" Application.OnTime TimeValue("09:35:00"), "Update_" ...
[/vba]ниже, после End Sub вставьте еще и [vba]
Код
Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls" iFileDateTime_1 = FileDateTime(Path_1) ...
[/vba] а в Модуль1 весь код сотрите и вместо Application.OnTime TimeValue("09:35:00"), "Update_" напишите Application.OnTime TimeValue("09:35:00"), Workbooks("Q1.5.xlsm")."Update_"_Boroda_
_Boroda_ Можно я уточню, то, что Вы выше написали? "Application.OnTime TimeValue("09:05:00"), "Update_"" - у меня сейчас в "ЭтаКнига" "Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls"" - у меня сейчас в "Модуль1"
Вы говорите, что нужно: В "Эта книга" после "Application.OnTime TimeValue("09:05:00"), "Update_", после End, добавить "Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls"" (т.е. всё, что у меня лежит в Модуле1) И здесь же изменить Application.OnTime TimeValue("09:35:00"), "Update_" на Application.OnTime TimeValue("09:35:00"), Workbooks("Q1.5.xlsm")."Update_". А из Модуля 1 всё вообще удалить. Таким образом, "ЭтаКнига" будет иметь вид [vba]
Код
Private Sub Workbook_Open() Application.OnTime TimeValue("09:35:00"), Workbooks("Q1.5.xlsm")."Update_" End Sub Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls" iFileDateTime_1 = FileDateTime(Path_1) .... End Sub
[/vba] А модуль1 будет пустой. Я правильно Вас понял?
_Boroda_ Можно я уточню, то, что Вы выше написали? "Application.OnTime TimeValue("09:05:00"), "Update_"" - у меня сейчас в "ЭтаКнига" "Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls"" - у меня сейчас в "Модуль1"
Вы говорите, что нужно: В "Эта книга" после "Application.OnTime TimeValue("09:05:00"), "Update_", после End, добавить "Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls"" (т.е. всё, что у меня лежит в Модуле1) И здесь же изменить Application.OnTime TimeValue("09:35:00"), "Update_" на Application.OnTime TimeValue("09:35:00"), Workbooks("Q1.5.xlsm")."Update_". А из Модуля 1 всё вообще удалить. Таким образом, "ЭтаКнига" будет иметь вид [vba]
Код
Private Sub Workbook_Open() Application.OnTime TimeValue("09:35:00"), Workbooks("Q1.5.xlsm")."Update_" End Sub Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls" iFileDateTime_1 = FileDateTime(Path_1) .... End Sub
[/vba] А модуль1 будет пустой. Я правильно Вас понял?ArkaIIIa
_Boroda_ К сожалению, если написать Application.OnTime TimeValue("09:35:00"), Workbooks("Q1.5.xlsm")."Update_", то вся строчка выделяется красным.
_Boroda_ К сожалению, если написать Application.OnTime TimeValue("09:35:00"), Workbooks("Q1.5.xlsm")."Update_", то вся строчка выделяется красным.ArkaIIIa
Не поленился, нарисовал себе все то, что у Вас. Все работает в первоначальном Вашем варианте. Вывод - все было правильно с самого начала, кроме самого макроса Апдейт (как, собственно, Хуго Вам и писал).
Не поленился, нарисовал себе все то, что у Вас. Все работает в первоначальном Вашем варианте. Вывод - все было правильно с самого начала, кроме самого макроса Апдейт (как, собственно, Хуго Вам и писал)._Boroda_
См. http://msdn.microsoft.com/en-us....ippet-1 Похоже что имя ищется в активной книге. В общем, готовьте пример - могу "поковырять". В общем по ссылке уже есть мысли как подойти.
Hugo, _Boroda_ Спасибо Вам за советы и за потраченное время. Извиняюсь, что так много его у Вас отнял. Постараюсь подготовить пример и выложить здесь. Так, наверное, действительно будет проще. И тут вот подумалось... если Hugo прав, и имя ищется только в активной книге, и по этому возникает ошибка, когда активна другая книга, может быть можно добавить какую-то строчку в код, чтобы перед срабатыванием макроса по времени активной делалась именно эта книга? Пускай в момент срабатывания меня "перекидывает" в ту книгу, это мне сильно мешать не будет, главное, чтобы работал без ошибок.
Hugo, _Boroda_ Спасибо Вам за советы и за потраченное время. Извиняюсь, что так много его у Вас отнял. Постараюсь подготовить пример и выложить здесь. Так, наверное, действительно будет проще. И тут вот подумалось... если Hugo прав, и имя ищется только в активной книге, и по этому возникает ошибка, когда активна другая книга, может быть можно добавить какую-то строчку в код, чтобы перед срабатыванием макроса по времени активной делалась именно эта книга? Пускай в момент срабатывания меня "перекидывает" в ту книгу, это мне сильно мешать не будет, главное, чтобы работал без ошибок.ArkaIIIa