Страницы: 1
RSS
макрос Excel4Macro
 
Из макроса VBA можно войти в макрос Excel4Macro например:  Application.Run "Имя",
но обратно не вернешься.

Как из макроса Excel4Macro программно перейти в макрос VBA
или как в макросе VBA сделать функцию содержащую код Excel4Macro,
чтобы можно было из этой функции вернуться в макрос VBA.
 
Может примером подзадорите народ.
 
А где же у Вас запрятан Excel4Macro? Насколько знаю Application.Run запускает указанную процедуру. Лучше действительно приложите пример - а то ничего непонятно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
В файле "преобразовать числа.xls": на листе Sheet1 расположена кнопка "START" для запуска
макроса VBA под названием "числа", состоящего из одной строки:
Application.Run "TestMacro"
Эта команда запускает макрос Excel4Macro.
На листе Macro1 находится текст макроса Excel4Macro,который обрабатывает файл "числа.xls".
Макросу на листе Macro1 присвоено имя "TestMacro" в меню екселя 2003 "вставка"-"имя"-"присвоить"
Файл "числа.xls" должен находиться в корневом каталоге диска С, так задано в макросе "TestMacro"
Макрос запускать при системном разделителе-точка.
Для изменения системного разделителя файлы "точка.reg" и "запятая.reg"
Для примера взят наипростейший макрос Excel4Macro, который заменяет в числах разделитель запятая на
точку и копирует в столбец L.
При системном разделителе запятая макрос (Excel 4.0) покажет ошибку/
Изменено: pavel68 - 10.09.2013 00:01:42
 
Еще пример (прим2.rar).
В файле "Проверка _ИНН.xls" на лист1 расположена кнопка для запуска
макроса VBA ("ИНН")  , который запускает макрос Excel4Macro ("Macro")  , расположенный на листе "Macro1" файла "Проверка _ИНН.xls".
Этот макрос проверяет контрольную сумму у ИНН, расположенных на листах "1" и "2" файла "Справочник.xls"
Файл "Справочник.xls" должен находиться в корневом каталоге диска С, что задано в макросе Excel4Macro
Файл "Проверка _ИНН.xls" может находиться в любом месте.
Системный разделитель может быть любым, точка или запятая.
В случае успешной проверки оба файла " "Проверка _ИНН.xls" и "Справочник.xls" закрываются
Изменено: pavel68 - 10.09.2013 02:52:57
 
Лично мне плохо понятно зачем использовать столь устаревший метод выполнения макросов. И в какой именно момент Вы хотите вернуться в VBA и для каких целей. Вы хотите продолжить выполнение кода, но уже из VBA непосредственно? По шагам:
-запустили из VBA операции листа макросов процедурой "Числа";
-выполнили операции листа макросов
-после этого продолжить код из процедру "Числа", который должен быть расположен после Application.Run "TestMacro"
Так?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Хотелось бы сделать какие-то действия в макросе VBA до строки Application.Run "TestMacro",затем войти в макрос Excel4.0, затем из него выйти программно и чтобы далее продолжалось выполнение команд из макроса vba после Application.Run "TestMacro", т.е. макрос Excel4.0 использовать примерно как функцию в макросе VBA.
Имеются макросы Excel4.0, которые были разработаны ранее и выполняют очень сложные операции,
но появилась необходимость кое-что дополнить и изменить,но так как этого языка не знаю,то
начал искать способ комбинации макросов.
Конвертора из Excel4Macro в VBA не существует,т.к в Excel4Macro есть команды, которые отсутствуют в VBA.На полное переписывание старых макросов уйдет очень много времени.
 
ExecuteExcel4Macro - см справку
Изменено: Слэн - 10.09.2013 13:03:39
Живи и дай жить..
 
ExecuteExcel4Macro означает- выполнить макрос старого формата Excel 4.0
Попробовал такой код в макросе ИНН (пример2)
Sub ИНН()
MsgBox Name(n)
Stop
End Sub

Function Name(n)
Application.ExecuteExcel4Macro "RUN(""Macro"" ;) "
Name = "Выход"
End Function

Получилось, что строка:
Application.ExecuteExcel4Macro "RUN(""Macro"" ;) "
аналогична строке:
Application.Run "Macro"
т.е. обратно из макроса Macro в VBA не возвращается.
Изменено: pavel68 - 10.09.2013 14:55:09
Страницы: 1
Наверх