Имя: Пароль:
1C
1С v8
Excel VBA и 1С
, ,
0 igwtbox
 
21.10.19
15:33
Нужна помощь. Не могу понять, в чем ошибка. Код ниже ругается "Метод объекта не обнаружен (InsertLines)":

    Application = Новый COMОбъект("Excel.Application");
    Workbook = Application.Workbooks.Add();
    Component = Workbook.VBProject.VBComponents.Add(1);
    Component.Name = "Test222";
    Module = Component.CodeModule;
    Module.InsertLines(1, "Sub Test");
    Module.InsertLines(2, "    MsgBox(123)");
    Module.InsertLines(3, "End Sub");
    Application.Visible = 1;

Причем аналогичный код для Word выполняется на отлично.
Плиз, хэлп!
1 Garykom
 
гуру
21.10.19
15:38
AddFromString попробуй вместо построчного
2 igwtbox
 
21.10.19
15:42
"Метод объекта не обнаружен (AddFromString)"
3 igwtbox
 
21.10.19
15:43
Причем,

Доверять доступ к объектной модели проектов VBA = Включен.
Параметры макросов = Включить все макросы.
4 Garykom
 
гуру
21.10.19
15:47
Workbook.VBProject.VBComponents.Item("ThisWorkbook").CodeModule.AddFromString(Код) ?
5 igwtbox
 
21.10.19
15:55
Workbook.VBProject.VBComponents.Item("ЭтаКнига").CodeModule.AddFromString("Sub Test");
    Workbook.VBProject.VBComponents.Item("ЭтаКнига").CodeModule.AddFromString("    MsgBox(123)");
    Workbook.VBProject.VBComponents.Item("ЭтаКнига").CodeModule.AddFromString("End Sub");

Такая же ошибка: "Метод объекта не обнаружен (AddFromString)"
6 Garykom
 
гуру
21.10.19
16:17
Ex=CreateObject("Excel.Application");
Исключение
Сообщить(ОписаниеОшибки(),"!!!");
Предупреждение("Не удалось запустить MS Excel!");
Возврат;
КонецПопытки;
Состояние("Открытие файла...");
Попытка
Wb=Ex.WorkBooks.Add();
Исключение
Возврат;
КонецПопытки;
Ex.Visible=-1;
Wb.Sheets(1).OLEObjects.Add("Forms.CommandButton.1",,,10, 99.75, 120.75,  "Очистить");//27.75
st = "Private Sub CommandButton1_Click()" +  Chr(13) +
" ThisWorkbook.Sheets(1).Columns(""E:E"").AutoFilter Field:=1, Criteria1:="">0"",
Operator:=xlAnd" + Chr(13) + "End Sub";
Ex.VBE.ActiveVBProject.VBComponents(Wb.Sheets(1).Name).CodeModule.AddFromString(st)
https://1c-h.ru/2010/05/18/8-1-programmistu-yazyk-excel/

Может сначала надо кнопку добавить хоть одну?
7 igwtbox
 
21.10.19
16:36
(6) Не всегда макросы должны запускаться с кнопки.
(6) "Поле объекта не обнаружено (OLEObjects)"
8 бегинер
 
21.10.19
17:07
excel 2007 (12.0.6611.1000) SP3
у меня твой код работает, ошибок нет:
Процедура Кнопка1Нажатие(Элемент)
Application = Новый COMОбъект("Excel.Application");
    Workbook = Application.Workbooks.Add();
    Component = Workbook.VBProject.VBComponents.Add(1);
    Component.Name = "Test222";
    Module = Component.CodeModule;
    Module.InsertLines(1, "Sub Test");
    Module.InsertLines(2, "    MsgBox(123)");
    Module.InsertLines(3, "End Sub");
    Application.Visible = 1;
КонецПроцедуры
9 бегинер
 
21.10.19
17:08
доступ включен:
http://school9korolev.moy.su/_nw/1/35038.jpg
10 бегинер
 
21.10.19
17:10
может куча "excel невидимых" висит в процессах пока "игрался"?
прибей/перезагрузись
11 igwtbox
 
21.10.19
17:15
(9) Да. Все правильно, включен
(10) Сейчас попробую перезагрузиться.

Самое обидное, что есть вставляешь этот же текст в Word VBA, то все работает...

Sub Macros1()
    
    Set ExcelApp = CreateObject("Excel.Application")
    Set Workbook = ExcelApp.Workbooks.Add()
    Set Component = Workbook.VBProject.VBComponents.Add(1)
    Component.Name = "Test222"
    Set Module = Component.CodeModule
    Module.InsertLines 1, "Sub Test"
    Module.InsertLines 2, "    MsgBox(123)"
    Module.InsertLines 3, "End Sub"
    ExcelApp.Visible = 1
    
End Sub

Т.е. ошибка где-то в связке 1С-Excel.
12 igwtbox
 
21.10.19
17:21
(10) После перезагрузки та же история...
13 Garykom
 
гуру
21.10.19
17:24
(12) Значит у тебя Excel неправильный
14 бегинер
 
21.10.19
17:26
(12) антивирь не стоит касперский?
типа такого может шалит?
http://rykovodstvo.ru/pars_docs/refs/52/51029/51029_html_m50919f.png
т.е. не разрешает самому вирусню/код VBA писать

отключи антивирь, перезапуск, проверь работоспособность
15 igwtbox
 
21.10.19
17:32
(14) У меня Нортон. но для чистоты эксперимента отключил, перезагрузился - такая же фигня.
(13) Пойду искать правильный Эксель.
16 бегинер
 
21.10.19
17:37
еще типа такого проверь у пользователя:
открываем оснастку "Службы компонентов" (Пуск->Администрирование->Службы компонентов)
в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем "Текущий пользователь", ОК.
17 бегинер
 
21.10.19
17:41
и перегруз
18 igwtbox
 
21.10.19
17:53
(16) Тоже не помогло.
19 бегинер
 
21.10.19
17:56
(18) блин :)

тогда тока (13)

плиз реинсталл апликатион
20 Сияющий в темноте
 
21.10.19
19:22
В справке к этомуExcel что написано?
вполне возможно,что надо другим способом в него лезть.
21 igwtbox
 
23.10.19
12:21
Докладываю обстановку.
Выйти из положения удалось только таким способом:

    Workbook.VBProject.VBComponents.Import(ИмяФайла);

Может кому пригодиться.