Как правильно из 1С запустить код в VBA Excel? #107168


#0 by VadimSh
Как правильно из 1С запустить код в VBA Excel? В VBA Excel  это меняет палитру стандартного цвета номер 15 Но как правильно это запустить из 1С v7.7? Вот такой код вызывает ошибку {Отчет.Прайс.Форма.Модуль}: Неопознанный оператор При проверке модуля обнаружены синтаксические ошибки!
#1 by OFF
Вот облегчение жизни по перекладке макроса экселя на 1с
#2 by OFF
в твоем разе должно быть Excel.ActiveWorkbook.Colors = RGB(234, 234, 234);
#3 by Asmody
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.
#4 by VadimSh
не так тоже не заработает, а еще одну ошибку напишет RGB(234, 234, 234) - это экселевская функция, 1с не знает что это, без ссылки на эксель 1с вдвойне ругаться будет. Но эта правая часть даже не важно она заменяется эквивалентным числом ( в данном случае 15395562), которое возвращает эта функция и нет вопросов. 1с ругается на скобки в конце .Colors ,но это надо передать экселю номер цвета, чтобы он знал для которого палитру менять. Без скобок для 1с типа вроде без ошибок выглядит, но уже для экселя - это уже ошибка
#5 by VadimSh
А через этот метод такую конструкцию 1с пропускает, но Эксель в таком вот варианте не собирается это число-аргумент присваивать свойству .Colors
#6 by Asmody
собственно вызов макроса на Excel: в 1С:    for i=1 to 10 do        for j=1 to 10 do в Excel: в файл testmacro.xls добавлен модуль и в нем
#7 by Asmody
a в воем случае вообще можно написать прямо в 1С: ... эффект будет тот же
#8 by VadimSh
Вот функция RGB(r,g,b) как раз прекрасно работает, про неё можно забыть, ActiveWorkbook.Colors = RGB(234, 234, 234) эквивалентно записи но 1с ругается на конструкцию Excel.ActiveWorkbook.Colors <<?>> а если запускать через метод run, то у вас в testmacro.xls была функция F_Sum(a1, a2) принимающая аргументы при запуске и метод их успешно передавал. А присвоить свойству какое-то число т.е.  .Colors = 15395562 не работает как такая функция с двумя аргументами .Colors(15, 15395562)
#9 by Asmody
в Excel напиши такой макрос: вызывай из 1С так: excel.run("testmacro.xls!SetColors",ActiveWorkbook,15,15395562);
#10 by VadimSh
Согласен, такой вариант должен работать, но тут файл экселевский создается с нуля через 1с. Как из 1с втолкнуть в него макрос, а затем перед записью удалить не представляю. Это если использовать файл шаблон, заранее загнать в него нужный код и 1с-кой работать уже с ним то да. Но не хотелось бы привязываться к отдельно заготовленному файлу.
#11 by Asmody
держи:
#12 by VadimSh
Ничего себе, это круто Все получилось, спасибо, вопрос ичерпан, тема закрыта И я думал, что я что-то знаю в VBA...
#13 by ШтушаКутуша
то Asmody: примите мои поздравления! все дюже гарно!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С