powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запуск макроса в другом файле Excel
25 сообщений из 25, страница 1 из 1
Запуск макроса в другом файле Excel
    #36583576
Максим М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, доброго времени суток.

Замучил вопрос, возможно дурацкий.
Есть два файла Excel: Книга1 и Книга2. В книге2 есть макрос2.
Задача: написать в Книге1 макрос, который:
1. Открывает книгу2
2. Запускает в ней Макрос2
3. Закрывает книгу2

На втором шаге затык: не знаю как по-человечески вызвать из Макроса Книги1 макрос, хранящийся в Книге2. Пока решил проблему, повесив Макрос2 на определенное событие книги2 (Worksheet_Change), но есть чувство, что это лечение зубов через задний проход.

Есть ли способ запустить макрос в книге2, обратившись к нему по имени?
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #36584049
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Application.Run "Книга2.xls!Module1.МояПроцедура"
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #36585078
Максим М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает! ))))
Спасибо!
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #36786725
lara-punk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравстуйте!
У меня есть следующий вопрос!
Есть Кгнига1 и в ней Макрос1. В макросе прописано, что когда я его выполняю, мне нужно сначала открыть файл с расширением *.bin.

iFile = Application.GetOpenFilename("Binäre Dateien, *.bin", , "Datei öffnen")
ChDir (FilePath(iFile))


У меня следующий вопрос - как прописать, чтобы:
1. Макрос выполнялся автоматически при открытии Книга1
2. Чтобы оно не открывало окно для выбора bin-файла, а атоматически открывало файл test.bin.

я в этом не разбираюсь, поэтому если можно, то попроще и по понятней, как говорится, для чайников ))

Заранее большое спасибо!!
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #36786755
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: lara-punk
> У меня следующий вопрос - как прописать, чтобы:
> 1. Макрос выполнялся автоматически при открытии Книга1

Для этого нужно перенести нужный макрос со всеми зависимостями(самописные функции и прозедуры вызываемые из нужного
макроса) в файл "Книга1.xls" и поставить вызов нужного макрова в обработчик события Workbook_Open() в модуле книги.

> 2. Чтобы оно не открывало окно для выбора bin-файла, а атоматически открывало файл test.bin.

Для этого нужно прописать полный путь к файлу test.bin, и тогда можно выбросить первую строку

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #36787822
lara-punk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос
> Автор: lara-punk
> У меня следующий вопрос - как прописать, чтобы:
> 1. Макрос выполнялся автоматически при открытии Книга1

Для этого нужно перенести нужный макрос со всеми зависимостями(самописные функции и прозедуры вызываемые из нужного
макроса) в файл "Книга1.xls" и поставить вызов нужного макрова в обработчик события Workbook_Open() в модуле книги.

> 2. Чтобы оно не открывало окно для выбора bin-файла, а атоматически открывало файл test.bin.

Для этого нужно прописать полный путь к файлу test.bin, и тогда можно выбросить первую строку



эээ.... простите, а можно пожалуйста как-то по подробней. Я первый раз работаю с макросами, да и Экселем я тоже не часто пользуюсь. Что и куда прописывать и переносить? что такое модуль книги и обработчик событий? как его открыть?

заранее большое спасибо!!
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #36787989
lara-punk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lara-punk[quot Игорь Горбонос]
> Автор: lara-punk
> У меня следующий вопрос - как прописать, чтобы:
> 1. Макрос выполнялся автоматически при открытии Книга1

Для этого нужно перенести нужный макрос со всеми зависимостями(самописные функции и прозедуры вызываемые из нужного
макроса) в файл "Книга1.xls" и поставить вызов нужного макрова в обработчик события Workbook_Open() в модуле книги.

> 2. Чтобы оно не открывало окно для выбора bin-файла, а атоматически открывало файл test.bin.

Для этого нужно прописать полный путь к файлу test.bin, и тогда можно выбросить первую строку



так.. с 1 пунктом я вроде разобрался, все в порядке. А вот второй пока не догоняю, куда этот путь прописывать - просто вместо строки
iFile = Application.GetOpenFilename("Binäre Dateien, *.bin", , "Datei öffnen")
прописать свой путь?? не получается...
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #36788025
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: lara-punk
> так.. с 1 пунктом я вроде разобрался, все в порядке.

Это хорошо, а то нет времени расписывать :)

> А вот второй пока не догоняю, куда этот путь прописывать - просто вместо строки
> iFile = Application.GetOpenFilename("Binare Dateien, *.bin", , "Datei offnen")
Эта строка кода всего лишь показывает диалог выбора файла и по выбору файла передает в переменную iFile путь к
выбранному файлу. Для того что-бы не показывать этот диалог, нужно просто прописать путь к файлу. Например iFile =
"c:\folder_for_binary\test.bin" .Но это обязывает положить файл test.bin d папку folder_for_binary расположенную на
диске С. И если файла не будет, произойдет ошибка.

Поэтому я сделал бы так, вместо первой строки, вторая, похоже нужна для правильной работы макроса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
iFile = "c:\folder_for_binary\test.bin"
If Dir(iFile) = "" Then ' Проверяем наличие файла
' Если файла нет, предлагаем указать, где находится нужный файл
    iFile = Application.GetOpenFilename("Binare Dateien, *.bin", , "Datei offnen")
    If Dir(iFile) = "" Then
' Если файла все равно нет, делать больше нечего
        Exit Sub
    End If
End If


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #36788068
lara-punk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос
> Автор: lara-punk
> так.. с 1 пунктом я вроде разобрался, все в порядке.

Это хорошо, а то нет времени расписывать :)

> А вот второй пока не догоняю, куда этот путь прописывать - просто вместо строки
> iFile = Application.GetOpenFilename("Binare Dateien, *.bin", , "Datei offnen")
Эта строка кода всего лишь показывает диалог выбора файла и по выбору файла передает в переменную iFile путь к
выбранному файлу. Для того что-бы не показывать этот диалог, нужно просто прописать путь к файлу. Например iFile =
"c:\folder_for_binary\test.bin" .Но это обязывает положить файл test.bin d папку folder_for_binary расположенную на
диске С. И если файла не будет, произойдет ошибка.

Поэтому я сделал бы так, вместо первой строки, вторая, похоже нужна для правильной работы макроса:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
iFile = "c:\folder_for_binary\test.bin"
If Dir(iFile) = "" Then ' Проверяем наличие файла
' Если файла нет, предлагаем указать, где находится нужный файл
    iFile = Application.GetOpenFilename("Binare Dateien, *.bin", , "Datei offnen")
    If Dir(iFile) = "" Then
' Если файла все равно нет, делать больше нечего
        Exit Sub
    End If
End If




насчет окна - это понятно! я так и делал, прописывал iFile = "c:\folder_for_binary\test.bin"
Вот только возникла не понятка. Когда я запускаю нужный файл через Application.GetOpenFilename все ОК - я получаю нужный результат. А когда я прописываю прямой путь, оно вроде работает, вот только в качестве результатов выводит все нули... и не могу понять почему. Может что-то подскажете??
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #36788111
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: lara-punk
> выводит все нули... и не могу понять почему. Может что-то подскажете??

Без самого макроса и этого bin-файла уже ничего не подскажу. Замена первой строки на мой код никак не могда изменить
что-то в работе макроса, поэтому мне кажется ты что-то "зацепил" случаянно и не заметил, поэтому и не работает.
Выкладывай и оригинальный макрос и переделанный, посмотрю.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #36788177
lara-punk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос
> Автор: lara-punk
> выводит все нули... и не могу понять почему. Может что-то подскажете??

Без самого макроса и этого bin-файла уже ничего не подскажу. Замена первой строки на мой код никак не могда изменить
что-то в работе макроса, поэтому мне кажется ты что-то "зацепил" случаянно и не заметил, поэтому и не работает.
Выкладывай и оригинальный макрос и переделанный, посмотрю.



файл ведь один и тот же, я ведь просто добавил строку с путем, а предыдущую закоментировал. Так или иначе, если есть возможность, то взгляни! Спасибо!
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #36788440
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Sub Bin2Xls()

Dim iFile
Dim lSize

'Bin-Datei цffnen
'iFile = Application.GetOpenFilename("Binдre Dateien, *.bin", , "Datei цffnen")
'iFile = "D:\test2.bin"
iFile = "C:\1_0\test2.bin"
If Dir(iFile) = "" Then ' Проверяем наличие файла
' Если файла нет, предлагаем указать, где находится нужный файл
    iFile = Application.GetOpenFilename("Binare Dateien, *.bin", , "Datei offnen")
    If Dir(iFile) = "" Then
' Если файла все равно нет, делать больше нечего
        Exit Sub
    End If
End If

ChDir FilePath(iFile)

'Datenfeld einlesen
Dim arr() As Single
'Set fs = CreateObject("Scripting.FileSystemObject")
'Set fso = fs.GetFile(iFile)
lSize = FileLen(iFile) 'fso.Size

ReDim arr( 1  To lSize /  4 )
Open iFile For Binary Access Read As # 1 
Get # 1 , , arr
Close # 1 

'Datenfeld in Tabelle schreiben
Set NewSheet = ThisWorkbook.Worksheets.Add 'after:=ThisWorkbook.Worksheets.Count
NewSheet.Name = ShortFileName(iFile)
For ii =  1  To UBound(arr) /  2 
   NewSheet.Cells(ii,  1 ).Value = arr(ii *  2  -  1 )
   NewSheet.Cells(ii,  2 ).Value = arr(ii *  2 )
   NewSheet.Cells(ii,  3 ).Value = Sqr(arr(ii *  2  -  1 ) ^  2  + arr(ii *  2 ) ^  2 )
   'NewSheet.Cells(ii, 4).Value = Tan(arr(ii * 2) / arr(ii * 2 - 1)) * 180 / 3.14159
Next ii
End Sub

Вот так выглядит мой вариант рабочего макроса. Больше я ничего не менял. Файл test2.bin лежит c:\1_0\test2.bin. Все
работает, создается новый лист, называется именем bin-файла и первые три столбца заполняется цифрами до 89 строки, потом
до 101 строки идут нули

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #36788557
lara-punk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос,

ух, ну ты и зверь!!! то что надо!! громадное спасибо!!!
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #37238755
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень нуждаюсь в помощи.
У меня к сожелению не запускаеться
Workbooks.Open ("C:\Gorokh\Report\RBNS\CalcRBNS01-01-10_31-03-11.XLS")-это работает

Application.ScreenUpdating = False
Application.Run "CalcRBNS01-01-10_31-03-10.XLS!Module1.Sortirovka_regest_2011_sluch_2011" -это не работает
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #37239300
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VikVikVikApplication.Run "CalcRBNS01-01-10_31-03-10.XLS!Module1.Sortirovka_regest_2011_sluch_2011" -это не работает
Так сработает: Application.Run " ' CalcRBNS01-01-10_31-03-10.XLS ' !Module1.Sortirovka_regest_2011_sluch_2011"

И так тоже: Application.Run " ' CalcRBNS01-01-10_31-03-10.XLS ' !Sortirovka_regest_2011_sluch_2011"
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #37239807
VikVikVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Запуск макроса в другом файле Excel
    #37789754
ikosten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в Excel 2010 у меня не работает конструкция типа

Код: vbnet
1.
Application.Run("Funcs.xla!Name")



1004
Не удается выполнить макрос ...
Возможно этот макрос отсутствует в текущей книге либо все макросы отключены.


Проверял настройки - макросы включены
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #37790013
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сравните:
vlth
Код: vbnet
1.
Application.Run "Книга2.xls!Module1.МояПроцедура"

ikosten
Код: vbnet
1.
Application.Run("Funcs.xla!Name")

Если даже у вас Name - задекларирована как public , то всё же не мешало бы изучить систаксис вызова подпрограмм с параметрами (скобки... Call ... etc)...
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #37790540
ikosten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Вообще вызов такой:

Код: vbnet
1.
Name = Application.Run("Funcs.xla!Name")



Код не мой и прекрасно работает в Excel 2003,
а в 2010 валится с ошибкой, пытаюсь разобраться что не так...
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #37790840
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ikosten,
попробуйте вместо Funcs.xla подставить полный путь к книге.
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #37790884
ikosten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скукотища,

не помогло.
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #37791663
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ikosten,

номер и описание ошибки напиши
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #37791666
ikosten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLAD,

1004
Не удается выполнить макрос ...
Возможно этот макрос отсутствует в текущей книге либо все макросы отключены.
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #37791674
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Проверил в Excel 2010.

Например выполняю
Код: vbnet
1.
Application.Run "ModResolver.xlsm!Module1.Resolver"


То работает нормально если книга с функцией открыта в экземпляре с вызывающим кодом. Иначе, валится с ошибкой. Если указать полный путь, то книга аттачится к Excel'ю но функция опять валится с ошибкой, но стоит убрать и вызвать книгу только по имени - то всё ОК.
Вывод: Надо проверить открыта ли сейчас книга с функциями, если нет, то открыть и уже потом сделать вызов.

Также можно (если например книга с функциями всегда будет не подалёку) сделать ссылку на книгу через окно Tools -> References. Тогда книга автоматически будет открываться, так как она зависимой от другой книги стала. И вызвать можно будет как по полному пути, например так:
Код: vbnet
1.
VBAProject.Module1.Resolver


или так:
Код: vbnet
1.
Module1.Resolver


главное чтобы имена не пересекались
...
Рейтинг: 0 / 0
Запуск макроса в другом файле Excel
    #37791706
ikosten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLAD,

Спасибо за развернутый ответ, но не помогло

Книга с функциями открыта, ссылка на нее прописана :(
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запуск макроса в другом файле Excel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]