Вход | Регистрация
 
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 или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.