![]() |
![]() |
|
Excel VBA: как программно добавить макрос? Ø |
☑ | ||
---|---|---|---|---|
0
swilf
02.10.06
✎
02:49
|
Как средствами VBA к листу книги Excel добавить макрос на VBA?
|
|||
1
swilf
02.10.06
✎
03:22
|
Вот такой код из 1с:
Попытка Sheet.Parent.VBProject.VBComponents(Sheet.CodeName).CodeModule.InsertLines(1, MacroText); Исключение XL.SendKeys("%е%м%б%н%в"); Sheet.Parent.VBProject.VBComponents(Sheet.CodeName).CodeModule.InsertLines(1, MacroText); КонецПопытки; ...работает, если в настройках безопасности разрешен доступ к макросам. А если запрещен, то Исключение не отрабатывает :( Можно ли как-нибудь отловить этот запрет и послать Excelю последовательность кнопок, разрешающую макросам доступ к макросам? |
|||
2
pit
02.10.06
✎
06:20
|
Разреши макросы программно...
|
|||
3
swilf
02.10.06
✎
06:45
|
(2) Как?
|
|||
4
ХМ
02.10.06
✎
08:55
|
Можно в ехеле создать макрос, которому в качестве параметра передать строки с нужным макросом и запустить на выполнение.
- создать макрос "ЗапускИз1С" и сохранить его в шаблоне в теле которого вставить VBComponents(Sheet.CodeName).CodeModule.InsertLines(1, MacroText); - запустить его выполнение из 1С - передать ему параметр MacroText - |
|||
5
swilf
02.10.06
✎
09:02
|
(4) Ну, если использовать шаблон, тогда проще заранее вставить в него нужные макросы (текст макроса не динамический). Но хочется без шаблона.
Проблема в том, что в Excel по умолчанию запрещено обращение к VBProject. Разрешить доступ можно через SendKeys - но только если заранее знать, что крыжика в чекбоксе "Доверять доступ к VB Project" нет. |
|||
6
ХМ
02.10.06
✎
09:12
|
Вирусы начинаем писать как обойти защиту от вирусов в MS office?
Это не здесь. |
|||
7
swilf
02.10.06
✎
09:15
|
(6) Боже упаси. Это расшифровка к подробному 1с-овскому отчету. По щелчку на статье в листе "Баланс" должен открыться лист с расшифровкой статьи.
|
|||
8
ХМ
02.10.06
✎
09:19
|
Я к тому, что ты пытаешься обойти защиту от макро вирусов. если необходимо вывести отчет в ехель лучше сделать шаблон.
|
|||
9
smaharbA
02.10.06
✎
10:42
|
HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security
AccessVBOM=1 Level=1 |
|||
10
swilf
02.10.06
✎
10:56
|
(9) Ага, нашел уже. Рабочий код для желающих:
ДоступКМакросам = 0; Попытка Wsh = CreateObject("WScript.Shell"); Wsh.RegWrite("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\10.0\Excel\Security\AccessVBOM", 1, "REG_DWORD"); Wsh.RegWrite("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\11.0\Excel\Security\AccessVBOM", 1, "REG_DWORD"); Wsh = ""; ДоступКМакросам = 1; Исключение КонецПопытки; XL = СоздатьОбъект("Excel.Application"); <...> Sheet.Parent.VBProject.VBComponents(Sheet.CodeName).CodeModule.InsertLines(1, MacroText); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |