Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Excel VBA и 1С

Excel VBA и 1С
Я
   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 выполняется на отлично.
Плиз, хэлп!
 
 
   Garykom
 
1 - 21.10.19 - 15:38
AddFromString попробуй вместо построчного
   igwtbox
 
2 - 21.10.19 - 15:42
"Метод объекта не обнаружен (AddFromString)"
   igwtbox
 
3 - 21.10.19 - 15:43
Причем,

Доверять доступ к объектной модели проектов VBA = Включен.
Параметры макросов = Включить все макросы.
   Garykom
 
4 - 21.10.19 - 15:47
Workbook.VBProject.VBComponents.Item("ThisWorkbook").CodeModule.AddFromString(Код) ?
   igwtbox
 
5 - 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)"
   Garykom
 
6 - 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/

Может сначала надо кнопку добавить хоть одну?
   igwtbox
 
7 - 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
   бегинер
 
10 - 21.10.19 - 17:10
может куча "excel невидимых" висит в процессах пока "игрался"?
прибей/перезагрузись
   igwtbox
 
11 - 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.
   igwtbox
 
12 - 21.10.19 - 17:21
(10) После перезагрузки та же история...
   Garykom
 
13 - 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 писать

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

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.