Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Указание названия книги и листа (простой вопрос) - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Указание названия книги и листа (простой вопрос) (Макросы/Sub)
Указание названия книги и листа (простой вопрос)
ArkaIIIa Дата: Среда, 11.06.2014, 13:51 | Сообщение № 21
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
Hugo
Ну, хотя бы подскажите, на каком этапе возникает ошибка?
Судя по тому, что пишет Борода:
Все, теперь понятно.Должно быть не Апдейт, а Книга("ооо").Модуль("ааа").Апдейт

Ошибка возникает в макросе, в котором указано время (9:05,9:35 и т.д.), который лежит в "ЭтаКнига".
А Вы рекомендуете вносить изменения в основной макрос - "Update_", лежащий в модуле.
 
Ответить
СообщениеHugo
Ну, хотя бы подскажите, на каком этапе возникает ошибка?
Судя по тому, что пишет Борода:
Все, теперь понятно.Должно быть не Апдейт, а Книга("ооо").Модуль("ааа").Апдейт

Ошибка возникает в макросе, в котором указано время (9:05,9:35 и т.д.), который лежит в "ЭтаКнига".
А Вы рекомендуете вносить изменения в основной макрос - "Update_", лежащий в модуле.

Автор - ArkaIIIa
Дата добавления - 11.06.2014 в 13:51
Hugo Дата: Среда, 11.06.2014, 13:54 | Сообщение № 22
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
_Boroda_ решил что макрос вызывается из другой книги.
Но т.к. он срабатывает, значит это ОК. Но ошибка при обновлении связей - вот это место и нужно смотреть. Может там какая-то связь не может обновиться?


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение_Boroda_ решил что макрос вызывается из другой книги.
Но т.к. он срабатывает, значит это ОК. Но ошибка при обновлении связей - вот это место и нужно смотреть. Может там какая-то связь не может обновиться?

Автор - Hugo
Дата добавления - 11.06.2014 в 13:54
_Boroda_ Дата: Среда, 11.06.2014, 13:55 | Сообщение № 23
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16672
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
У меня так работает:
В книге 778 в "Эта книга" лежит макрос tt
[vba]
Код
Sub tt()
MsgBox "ff"
End Sub
[/vba]
в другой книге запускаю макрос uu
[vba]
Код
Sub uu()
Workbooks("778.xlsm").tt
End Sub
[/vba]
и этот макрос uu запускает макрос tt.
_Boroda_ решил что макрос вызывается из другой книги.
Да, именно так я и подумал.
Вернее, что при активной книге1 запускается макрос в книге2, который запускает второй макрос в книге2
Попробуйте положить макрос Апдейт в модуль книги ("Эта книга") и переписать строку обновления так
[vba]
Код
Application.OnTime TimeValue("13:05:00"), Workbooks("Q1.5.xlsm")."Update_"
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУ меня так работает:
В книге 778 в "Эта книга" лежит макрос tt
[vba]
Код
Sub tt()
MsgBox "ff"
End Sub
[/vba]
в другой книге запускаю макрос uu
[vba]
Код
Sub uu()
Workbooks("778.xlsm").tt
End Sub
[/vba]
и этот макрос uu запускает макрос tt.
_Boroda_ решил что макрос вызывается из другой книги.
Да, именно так я и подумал.
Вернее, что при активной книге1 запускается макрос в книге2, который запускает второй макрос в книге2
Попробуйте положить макрос Апдейт в модуль книги ("Эта книга") и переписать строку обновления так
[vba]
Код
Application.OnTime TimeValue("13:05:00"), Workbooks("Q1.5.xlsm")."Update_"
[/vba]

Автор - _Boroda_
Дата добавления - 11.06.2014 в 13:55
ArkaIIIa Дата: Среда, 11.06.2014, 13:59 | Сообщение № 24
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
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
Дата добавления - 11.06.2014 в 13:59
Hugo Дата: Среда, 11.06.2014, 14:04 | Сообщение № 25
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Сделайте макет - книга с онтайм, книга с связями, книга с которой связи. Всё в один архив - и посмотрим.
В Workbooks("Q1.5.xlsm").UpdateLink не ошиблись с именем файла? Та книга открыта?


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеСделайте макет - книга с онтайм, книга с связями, книга с которой связи. Всё в один архив - и посмотрим.
В Workbooks("Q1.5.xlsm").UpdateLink не ошиблись с именем файла? Та книга открыта?

Автор - Hugo
Дата добавления - 11.06.2014 в 14:04
ArkaIIIa Дата: Среда, 11.06.2014, 14:18 | Сообщение № 26
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
В Workbooks("Q1.5.xlsm").UpdateLink не ошиблись с именем файла? Та книга открыта?

Часть с UpdateLink у меня сейчас выглядит вот так.
[vba]
Код
  Path_1 = "F:\STALE_APP_REPORT.xls"
     iFileDateTime_1 = FileDateTime(Path_1)
     Workbooks("Q1.5.xlsm").Worksheets("РМ").Cells(27, 11) = iFileDateTime_1
     Workbooks("Q1.5.xlsm").UpdateLink Name:= _
         "F:\STALE_APP_REPORT.xls", Type:=xlExcelLinks
[/vba]
Т.е. в книгу "Q1.5.xlsm", на лист "РМ", в ячейку (27,11) вставляется дата и время последнего обновления файла "STALE_APP_REPORT.xls".
Книга Q1.5 - открыта.
Книга STALE_APP_REPORT - нет. Она тоже должна быть открыта? Но с неё же ничего не копируется.
 
Ответить
Сообщение
В Workbooks("Q1.5.xlsm").UpdateLink не ошиблись с именем файла? Та книга открыта?

Часть с UpdateLink у меня сейчас выглядит вот так.
[vba]
Код
  Path_1 = "F:\STALE_APP_REPORT.xls"
     iFileDateTime_1 = FileDateTime(Path_1)
     Workbooks("Q1.5.xlsm").Worksheets("РМ").Cells(27, 11) = iFileDateTime_1
     Workbooks("Q1.5.xlsm").UpdateLink Name:= _
         "F:\STALE_APP_REPORT.xls", Type:=xlExcelLinks
[/vba]
Т.е. в книгу "Q1.5.xlsm", на лист "РМ", в ячейку (27,11) вставляется дата и время последнего обновления файла "STALE_APP_REPORT.xls".
Книга Q1.5 - открыта.
Книга STALE_APP_REPORT - нет. Она тоже должна быть открыта? Но с неё же ничего не копируется.

Автор - ArkaIIIa
Дата добавления - 11.06.2014 в 14:18
ArkaIIIa Дата: Среда, 11.06.2014, 14:21 | Сообщение № 27
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
Попробуйте положить макрос Апдейт в модуль книги ("Эта книга") и переписать строку обновления так
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
Дата добавления - 11.06.2014 в 14:21
ArkaIIIa Дата: Среда, 11.06.2014, 14:25 | Сообщение № 28
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
_Boroda_
Поясню. Нет какой-то конкретной третьей книги, в которой я точно буду сидеть в момент срабатывания макроса, и в модуль которой можно было бы продублировать "Update_".
На момент срабатывания макроса я могу сидеть в условной книге3, Новой книге, Explorer, Lotus, где угодно, при этом в ключевой для меня книге "Q1.5" должны корректно отрабатываться вышеупомянутые макросы.
 
Ответить
Сообщение_Boroda_
Поясню. Нет какой-то конкретной третьей книги, в которой я точно буду сидеть в момент срабатывания макроса, и в модуль которой можно было бы продублировать "Update_".
На момент срабатывания макроса я могу сидеть в условной книге3, Новой книге, Explorer, Lotus, где угодно, при этом в ключевой для меня книге "Q1.5" должны корректно отрабатываться вышеупомянутые макросы.

Автор - ArkaIIIa
Дата добавления - 11.06.2014 в 14:25
_Boroda_ Дата: Среда, 11.06.2014, 14:34 | Сообщение № 29
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16672
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Да нет, не так.
Туда, где у Вас написано [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_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДа нет, не так.
Туда, где у Вас написано [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_
Дата добавления - 11.06.2014 в 14:34
ArkaIIIa Дата: Среда, 11.06.2014, 14:46 | Сообщение № 30
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
_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
Дата добавления - 11.06.2014 в 14:46
ArkaIIIa Дата: Среда, 11.06.2014, 14:59 | Сообщение № 31
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
_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
Дата добавления - 11.06.2014 в 14:59
_Boroda_ Дата: Среда, 11.06.2014, 15:20 | Сообщение № 32
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16672
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Не поленился, нарисовал себе все то, что у Вас. Все работает в первоначальном Вашем варианте. Вывод - все было правильно с самого начала, кроме самого макроса Апдейт (как, собственно, Хуго Вам и писал).


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНе поленился, нарисовал себе все то, что у Вас. Все работает в первоначальном Вашем варианте. Вывод - все было правильно с самого начала, кроме самого макроса Апдейт (как, собственно, Хуго Вам и писал).

Автор - _Boroda_
Дата добавления - 11.06.2014 в 15:20
ArkaIIIa Дата: Среда, 11.06.2014, 15:26 | Сообщение № 33
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
_Boroda_
В момент срабатывания макроса Вы находитесь в посторонней книге?
У меня ругается на Subscritp out of range.
 
Ответить
Сообщение_Boroda_
В момент срабатывания макроса Вы находитесь в посторонней книге?
У меня ругается на Subscritp out of range.

Автор - ArkaIIIa
Дата добавления - 11.06.2014 в 15:26
Hugo Дата: Среда, 11.06.2014, 15:27 | Сообщение № 34
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Что-то с UpdateLink - может ссылки могут обновляться только у активной книги? Не знаю...


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЧто-то с UpdateLink - может ссылки могут обновляться только у активной книги? Не знаю...

Автор - Hugo
Дата добавления - 11.06.2014 в 15:27
Hugo Дата: Среда, 11.06.2014, 15:28 | Сообщение № 35
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
См. http://msdn.microsoft.com/en-us....ippet-1
Похоже что имя ищется в активной книге.
В общем, готовьте пример - могу "поковырять". В общем по ссылке уже есть мысли как подойти.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеСм. http://msdn.microsoft.com/en-us....ippet-1
Похоже что имя ищется в активной книге.
В общем, готовьте пример - могу "поковырять". В общем по ссылке уже есть мысли как подойти.

Автор - Hugo
Дата добавления - 11.06.2014 в 15:28
ArkaIIIa Дата: Четверг, 12.06.2014, 12:39 | Сообщение № 36
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
Hugo, _Boroda_
Спасибо Вам за советы и за потраченное время. Извиняюсь, что так много его у Вас отнял.
Постараюсь подготовить пример и выложить здесь. Так, наверное, действительно будет проще.
И тут вот подумалось... если Hugo прав, и имя ищется только в активной книге, и по этому возникает ошибка, когда активна другая книга, может быть можно добавить какую-то строчку в код, чтобы перед срабатыванием макроса по времени активной делалась именно эта книга? Пускай в момент срабатывания меня "перекидывает" в ту книгу, это мне сильно мешать не будет, главное, чтобы работал без ошибок.
 
Ответить
СообщениеHugo, _Boroda_
Спасибо Вам за советы и за потраченное время. Извиняюсь, что так много его у Вас отнял.
Постараюсь подготовить пример и выложить здесь. Так, наверное, действительно будет проще.
И тут вот подумалось... если Hugo прав, и имя ищется только в активной книге, и по этому возникает ошибка, когда активна другая книга, может быть можно добавить какую-то строчку в код, чтобы перед срабатыванием макроса по времени активной делалась именно эта книга? Пускай в момент срабатывания меня "перекидывает" в ту книгу, это мне сильно мешать не будет, главное, чтобы работал без ошибок.

Автор - ArkaIIIa
Дата добавления - 12.06.2014 в 12:39
Hugo Дата: Четверг, 12.06.2014, 13:19 | Сообщение № 37
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Активировать просто, но не хотелось. Но попробуйте:
[vba]
Код
Workbooks("Q1.5.xlsm").activate
[/vba]
перед обновлением ссылок.
Но уверен что можно обойтись без активации.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеАктивировать просто, но не хотелось. Но попробуйте:
[vba]
Код
Workbooks("Q1.5.xlsm").activate
[/vba]
перед обновлением ссылок.
Но уверен что можно обойтись без активации.

Автор - Hugo
Дата добавления - 12.06.2014 в 13:19
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Указание названия книги и листа (простой вопрос) (Макросы/Sub)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!