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

Вход

Регистрация

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

 

= Мир MS Excel/Не осуществляется команда Call - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не осуществляется команда Call (Макросы/Sub)
Не осуществляется команда Call
Geografglobuspropil Дата: Вторник, 17.03.2015, 12:23 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте! Столкнулся со следующей проблемой. Есть два файла: А и В. Файл А открывает файл В. В файле В автоматически выполняется макрос, который завершается командой Application.Run, ссылающейся на другой макрос в файле А. Он, в частности, определяет, какой еще, помимо файла А, открыт и закрывает его. До этого момента все работает. Далее должен произойти переход к еще одному макросу файла А по команде Call, но команда не выполняется. Я не могу понять, в чем загвоздка. Файлы во вложении. Папку «Не работает Call» необходимо поместить на диск С. Большое спасибо!
К сообщению приложен файл: __Call.rar (24.8 Kb)
 
Ответить
СообщениеЗдравствуйте! Столкнулся со следующей проблемой. Есть два файла: А и В. Файл А открывает файл В. В файле В автоматически выполняется макрос, который завершается командой Application.Run, ссылающейся на другой макрос в файле А. Он, в частности, определяет, какой еще, помимо файла А, открыт и закрывает его. До этого момента все работает. Далее должен произойти переход к еще одному макросу файла А по команде Call, но команда не выполняется. Я не могу понять, в чем загвоздка. Файлы во вложении. Папку «Не работает Call» необходимо поместить на диск С. Большое спасибо!

Автор - Geografglobuspropil
Дата добавления - 17.03.2015 в 12:23
Serge_007 Дата: Вторник, 17.03.2015, 12:36 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеОтветил здесь: http://forum.msexcel.ru/index.php/topic,10881.0.html

Автор - Serge_007
Дата добавления - 17.03.2015 в 12:36
Geografglobuspropil Дата: Вторник, 17.03.2015, 13:08 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо, но мне очень нужно реализовать переход методом Call или подобным. Что же делать, как же быть?
 
Ответить
СообщениеСпасибо, но мне очень нужно реализовать переход методом Call или подобным. Что же делать, как же быть?

Автор - Geografglobuspropil
Дата добавления - 17.03.2015 в 13:08
Manyasha Дата: Вторник, 17.03.2015, 13:40 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Geografglobuspropil, здравствуйте. Можно узнать, почему так необходимо использовать метод Call?
В примере Сергея, в макросе при открытии файла А можно заменить Завершение на Call Завершение :) [vba]
Код
Private Sub Workbook_Open()
     MsgBox ("Начинается выполнение макроса")
     Application.Workbooks.Open ("C:\Не работает Call\B.xlsm")
     ActiveWorkbook.Worksheets("Лист2").Range("a1") = ActiveWorkbook.Name
     Call Завершение
End Sub
[/vba]не пойдет?


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеGeografglobuspropil, здравствуйте. Можно узнать, почему так необходимо использовать метод Call?
В примере Сергея, в макросе при открытии файла А можно заменить Завершение на Call Завершение :) [vba]
Код
Private Sub Workbook_Open()
     MsgBox ("Начинается выполнение макроса")
     Application.Workbooks.Open ("C:\Не работает Call\B.xlsm")
     ActiveWorkbook.Worksheets("Лист2").Range("a1") = ActiveWorkbook.Name
     Call Завершение
End Sub
[/vba]не пойдет?

Автор - Manyasha
Дата добавления - 17.03.2015 в 13:40
RAN Дата: Вторник, 17.03.2015, 14:09 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Не работает по причине принципиально построенного алгоритма.
Код вызывается из В, и, соответственно, при ее закрытии прекращает выполняться.
С такими изменениями код закроет книгу А, но вернется в исходную процедуру, а книга А уже закрыта.
[vba]
Код
Sub Завершение()
     Da = MsgBox("Сейчас закроется файл B и должен закрыться файл А, но проблема в том, что это не происходит", vbOKOnly, "Этап 3")
     If Da = vbOK Then
     Dim book As String
     book = ThisWorkbook.Sheets("Лист2").Range("a1")
     Workbooks(book).Save
     Call Выход
     Workbooks(book).Close False
     End If
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНе работает по причине принципиально построенного алгоритма.
Код вызывается из В, и, соответственно, при ее закрытии прекращает выполняться.
С такими изменениями код закроет книгу А, но вернется в исходную процедуру, а книга А уже закрыта.
[vba]
Код
Sub Завершение()
     Da = MsgBox("Сейчас закроется файл B и должен закрыться файл А, но проблема в том, что это не происходит", vbOKOnly, "Этап 3")
     If Da = vbOK Then
     Dim book As String
     book = ThisWorkbook.Sheets("Лист2").Range("a1")
     Workbooks(book).Save
     Call Выход
     Workbooks(book).Close False
     End If
End Sub
[/vba]

Автор - RAN
Дата добавления - 17.03.2015 в 14:09
Geografglobuspropil Дата: Вторник, 17.03.2015, 14:16 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Задача состоит в том, чтобы один файл открыл другой. Во втором файле при открытии по методу Workbook_Open выполнились свои макросы (там вызываются MsgBox-окна, в которые я ввожу значения). Потом этот файл закрылся, после чего в первом файле должно начаться выполнение следующих макросов. В заключении мне необходимо выполнить Call Выход, в котором прописано, как закрыть этот файл (сохранить и закрыть или вызвать следующее окно). Непонятно, почему не выполняется переход от макроса "Завершение" к макросу "Выход". А вообще цель такая, чтобы работать в файлах без использования мыши: чтобы выполнение макроса началось при открытии первого файла, а дальше осуществлялся переход от одного макроса к другому. И так, пока не закончится вся цепочка.
 
Ответить
СообщениеЗадача состоит в том, чтобы один файл открыл другой. Во втором файле при открытии по методу Workbook_Open выполнились свои макросы (там вызываются MsgBox-окна, в которые я ввожу значения). Потом этот файл закрылся, после чего в первом файле должно начаться выполнение следующих макросов. В заключении мне необходимо выполнить Call Выход, в котором прописано, как закрыть этот файл (сохранить и закрыть или вызвать следующее окно). Непонятно, почему не выполняется переход от макроса "Завершение" к макросу "Выход". А вообще цель такая, чтобы работать в файлах без использования мыши: чтобы выполнение макроса началось при открытии первого файла, а дальше осуществлялся переход от одного макроса к другому. И так, пока не закончится вся цепочка.

Автор - Geografglobuspropil
Дата добавления - 17.03.2015 в 14:16
Geografglobuspropil Дата: Вторник, 17.03.2015, 14:32 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Я рассуждал так: если макрос 1 вызывает макрос 2, то действие макроса 1 завершается в тот момент, когда начинается действие макроса 2. По-вашему, как я понял, макрос 1 выполняется и тогда, когда уже начал выполняться вызванный им макрос 2. Из этого следует, что книгу с макросом 1 нельзя закрывать до тех пор, пока не выполнится макрос 2. Примерно так?
 
Ответить
СообщениеЯ рассуждал так: если макрос 1 вызывает макрос 2, то действие макроса 1 завершается в тот момент, когда начинается действие макроса 2. По-вашему, как я понял, макрос 1 выполняется и тогда, когда уже начал выполняться вызванный им макрос 2. Из этого следует, что книгу с макросом 1 нельзя закрывать до тех пор, пока не выполнится макрос 2. Примерно так?

Автор - Geografglobuspropil
Дата добавления - 17.03.2015 в 14:32
Geografglobuspropil Дата: Вторник, 17.03.2015, 14:36 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Можно ли как-то разорвать эту связь: макрос 1 в книге А вызвал макрос 2 в книге В, на этом мы про макрос 1 забыли. Макрос 2 в книге В вызывает макрос 3 в книге С, на этом связь с макросом 2 прерывается. И так далее. Как переходить от одной книги к другой, закрывая предыдущую? Извините за назойливость!
 
Ответить
СообщениеМожно ли как-то разорвать эту связь: макрос 1 в книге А вызвал макрос 2 в книге В, на этом мы про макрос 1 забыли. Макрос 2 в книге В вызывает макрос 3 в книге С, на этом связь с макросом 2 прерывается. И так далее. Как переходить от одной книги к другой, закрывая предыдущую? Извините за назойливость!

Автор - Geografglobuspropil
Дата добавления - 17.03.2015 в 14:36
RAN Дата: Вторник, 17.03.2015, 14:47 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Запускать VBS скрипт, а не макрос в Excel.
Либо сделать нормальный алгоритм.
На какой требуется запуск макроса из книги В?
Запускайте из А, и проблем не будет.

[vba]
Код
Set wb = Workbooks.Open("C:\Не работает Call\B.xlsm")
If Not wb Is Nothing then
Call Что_Нужно
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЗапускать VBS скрипт, а не макрос в Excel.
Либо сделать нормальный алгоритм.
На какой требуется запуск макроса из книги В?
Запускайте из А, и проблем не будет.

[vba]
Код
Set wb = Workbooks.Open("C:\Не работает Call\B.xlsm")
If Not wb Is Nothing then
Call Что_Нужно
[/vba]

Автор - RAN
Дата добавления - 17.03.2015 в 14:47
Geografglobuspropil Дата: Вторник, 17.03.2015, 15:09 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо! Буду разбираться, может, и получится.
 
Ответить
СообщениеСпасибо! Буду разбираться, может, и получится.

Автор - Geografglobuspropil
Дата добавления - 17.03.2015 в 15:09
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не осуществляется команда Call (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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