powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / выполнение кода в другом файле
30 сообщений из 30, показаны все 2 страниц
выполнение кода в другом файле
    #38027661
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 2 файла Excel. Как можно сделать, чтобы, например, при нажатии кнопки в одном файле в другом выполнялся определенный код?
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38027673
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно выполнить макрос (код), записанный в этом другом файле?
Выполняемый код будет оперировать данными в первом файле, или в "своём" файле?
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38027679
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну да, нужно выполнить код, записанный в другом файле.
Поясню. Есть несколько файлов, из которых нужно взять несколько аргументов и передать их в общий код, вычислить значения и вернуть обратно.
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38027681
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
Application.Run "Книга2.xls!MySub"
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38027682
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как туда аргументы передать?
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38027685
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КДПоясню. Есть несколько файлов, из которых нужно взять несколько аргументов и передать их в общий код, вычислить значения и вернуть обратно.Так вам не код в "тех" файлах нужно выполнить, а получить данные из них - и вернуть другие данные обратно? А "общий код", выполняющий вычисления, и так в вашей рабочей книге находится?
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38027686
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КДА как туда аргументы передать?Казанский
Код: vbnet
1.
Application.Run "Книга2.xls!MySub", Argument1, Argument2,...
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38027689
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так. Еще раз. Есть несколько файлов, в которых на изменение значений в определенных ячейках запускается код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub Worksheet_Change(ByVal Target As Range)
и в качестве аргументов в общую процедуру передаются значения нескольких ячеек.
End Sub

Private Sub Общая_процедура
вычисляются данные, результаты заносятся в ячейки.
End sub



Хорошо бы, если бы эта общая процедура была где-нибудь в одном месте, а не в каждом файле.

AndreTM, спасибо! Буду пробовать.
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38027710
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А не проще ли тогда не экспериментировать, а просто пооткрывать файлы и записать нужные значения - нехай прямо на месте всё и работает?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
set oLastWB = ActiveWorkbook
Workbooks.Open "MyFile2.xls"
with ActiveWorkbook.Sheets("Данные")
 .Cells(3,3) = 5
 .Range("B10") = "Вася"
end with
ActiveWorkbook.Close SaveChanges:=True
Workbooks.Open "MyFile3.xls"
with ActiveWorkbook.Sheets("Лист10")
 .Cells(15,3) = 28
 .Cells(16,3) = 29
end with
ActiveWorkbook.Close SaveChanges:=True
' ...
oLastWB.Activate
set oLastWb = Nothing
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38029451
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTMКазанский
Код: vbnet
1.
Application.Run "Книга2.xls!MySub", Argument1, Argument2,...
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38029453
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не ту кнопку нажал, извиняюсь.
Что-то у меня при таком вызове ошибку 1004 выдает - не найден макрос.
?
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38029578
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Help Run Method

Run method as it applies to the Application object.

Runs a macro or calls a function. This can be used to run a macro written in Visual Basic or the Microsoft Excel macro language, or to run a function in a DLL or XLL.

expression.Run(Macro, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30)
expression Required. An expression that returns an Application object.

Macro Optional Variant. The macro to run. This can be either a string with the macro name, a Range object indicating where the function is, or a register ID for a registered DLL (XLL) function. If a string is used, the string will be evaluated in the context of the active sheet.

Arg1-Arg30 Optional Variant. The arguments that should be passed to the function.

Remarks
You cannot use named arguments with this method. Arguments must be passed by position.

The Run method returns whatever the called macro returns. Objects passed as arguments to the macro are converted to values (by applying the Value property to the object). This means that you cannot pass objects to macros by using the Run method.

Example
This example shows how to call the function macro My_Func_Sum, which is defined on the macro sheet Mycustom.xlm (the macro sheet must be open) . The function takes two numeric arguments (1 and 5, in this example).

mySum = Application.Run("MYCUSTOM.XLM!My_Func_Sum", 1, 5)
MsgBox "Macro result: " & mySum

Вариации на тему пробовали?
Application.Run Macro:="Книга2.xls!MySub", Arg1:=Argument1, Arg2:=Argument2
Call Application.Run("Книга2.xls!MySub", Argument1, Argument2)

И вообще, сказано же - книга с выполняемым кодом должна быть открыта...
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38030341
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал, пробовал.
Опытным путем установил, что вызываемая процедура должна находиться в общем модуле. Т.е. из "частного" файла на процедуре Worksheet_Change (в модуле листа) вызывается процедура, находящаяся также в общем модуле другого "общего" файла, затем полученные значения передаются обратно в "частный" файл в процедуру, которая находится в общем модуле.
И все бы хорошо. На одном файле попробовал - работает, на другом пробую - пишет: ошибка 1004 Не найден макрос. А называется также и расположен также как и в работающем файле. Сижу, втыкаю, где косяк...
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38030643
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я все равно против такого подхода. Мало ли, где-то логика поменяется в одном-другом (но не во всех) вызываемых файлах...

Что касается "общей процедуры": не изобретайте велосипед, просто напишите свою надстройку и подключите её...
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38030899
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, логика вряд ли поменяется.
Там смысл в том, что получается какой-то результат. От результата считается погрешность (%). Затем округляется по определенному правилу. Результат выдается с той же точностью, что и погрешность.
Вычисления результата в каждом файле свои (но формулы могут быть похожи или совпадать). А вот правило округления для всех едино - решил вынести в общую процедуру. Чем же это плохой подход?
Можно, конечно, и надстройку. Но уже чисто спортивный интерес: почему на одном файле работает, а на другом - нет.
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38033704
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, что-то не получается :(
Один файл работает, второй - глючит.
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38033716
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Образцы, брат, образцы!.."
Где примеры?
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38033727
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КДВ общем, что-то не получается :(
Один файл работает, второй - глючит.Имя одного с пробелами, другого - без, наверное. Не хватает апострофов:
Код: vbnet
1.
Application.Run "'Книга другая.xls'!MySub"
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38035099
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_PristИмя одного с пробелами, другого - без, наверное. Не хватает апострофов:
Код: vbnet
1.
Application.Run "'Книга другая.xls'!MySub"

Вот это завтра попробую. Если не пойдет - выложу примеры.
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38035661
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то не так. Выкладываю примеры.
Файл "Общая" должен быть открыт, т.к. там общая процедура. Файл "Округление" - работает, "Расчет ..." - нет.
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38035662
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38035666
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38038518
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Примеры не помогли?
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38038551
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КД,

А чем они могли помочь, если в коде Application.Run вызывает код из книги "Общая.xls", который мы не видим?
Ошибка может быть в переданных параметрах.
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38038559
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_PristКД,

А чем они могли помочь, если в коде Application.Run вызывает код из книги "Общая.xls", который мы не видим?
Ошибка может быть в переданных параметрах.Ошибка, не "Общая", а "'Расчет концентрации PO4 КФК-3-01 кюв 20.xls'!ForCells"

Кстати, эта самая книга - Расчет концентрации PO4 КФК-3-01 кюв 20 - открыта на момент выполнения кода?
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38038804
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_PristКД,

А чем они могли помочь, если в коде Application.Run вызывает код из книги "Общая.xls", который мы не видим?
Ошибка может быть в переданных параметрах.
Как это - не видите?
Открываем файл "Общая" -> Исходный текст -> VBA Project -> Module1
Теперь видно?

The_PristОшибка, не "Общая", а "'Расчет концентрации PO4 КФК-3-01 кюв 20.xls'!ForCells"

Кстати, эта самая книга - Расчет концентрации PO4 КФК-3-01 кюв 20 - открыта на момент выполнения кода?
Конечно, открыта. Т.е. мы запускаем код, изменяя значения в ячейках с зеленой заливкой либо в файле "Округление" (работает), либо в файле "Расчет ..." (не работает). Файл "Общая" в обоих случаях должен быть открыт.
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38063548
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался.
Ошибка была вот здесь: Application.Run "'Книга другая.xls'!MySub - в названии файла. Там в некоторых названиях и кириллица и латиница и другие символы. Видать, перепутались, а буквы внешне похожи, не сразу дошло почему где-то работает, а где-то - нет.
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38063563
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Копипаст рулит
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38428721
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создавал-создавал разную кучу всяких книг, процедуры в которых вызывали общую в другой книге. Всё работало, копипаст рулил. А вот опять наткнулся на какую-то бяку.
Процедура в стандартном модуле одной книги (К1П1) вызывает другую тоже в стандартном модуле другой книги (К2П1), после чего вызывается процедура в первой книге (К1П2). Вот тут-то и засада: при вызове К1П2 возникает ошибка: -2147024809 (80070057) Не найден макрос... и т.д. Вроде бы имена файлов и процедур все правильные, на что думать - не знаю.
...
Рейтинг: 0 / 0
выполнение кода в другом файле
    #38428884
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел. Апострофы забыл вокруг имени файла, а оно с пробелами.
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / выполнение кода в другом файле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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