HelpF.pro

Запуск макроса в MS Word из 1С

Код 1C v 8.х
 //Пример показывает как из 1С вызывается MS Word, вставляется макрос и запускается!
//Макрос пишет на листе Добрый день!, https://helpf.pro и сохраняет файл в D:/primer.doc

ПримерМакроса = "Sub VBAprimer()
|S_election.TypeText Text:=""Добрый день!""
|Application.Keyboard (1033)
|S_election.TypeText Text:="": https://helpf.pro""
|S_election.TypeParagraph
|S_election.MoveUp Unit:=wdLine, Count:=2
|S_election.EndKey Unit:=wdLine, Extend:=wdExtend
|S_election.Style = ActiveDocument.Styles(""Заголовок 1"")
|S_election.MoveDown Unit:=wdLine, Count:=1
|S_election.HomeKey Unit:=wdLine
|S_election.EndKey Unit:=wdLine, Extend:=wdExtend
|S_election.Style = ActiveDocument.Styles(""Заголовок 2"")
|ActiveDocument.SaveAs FileName:=""D:/primer.doc"", FileFormat:= _
| wdFormatDocument, LockComments:=False, Password:="""", AddToRecentFiles:= _
| True, WritePassword:="""", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
| False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
| SaveAsAOCELetter:=False
|End Sub";

// Создание объекта
Word = Новый COMОбъект("Word.Application");
Word.Documents.Add();
//VBComponents = Word.VBE.ActiveVBProject.VBComponents;
VBComponents = Word.ActiveDocument.VBProject.VBComponents;
Count = VBComponents.Count();
VBComponents.Add(1);
VBComponents.Item(Count + 1).CodeModule.I_nsertLines(1, ПримерМакроса);
Word.Application.Run(VBAprimer");
Word.Quit();
Word = Неопределено;



Код 1C v 7.x
  // Если не будет работать - возможно установлен высокий уровень безопасности. Понизьте до среднего ...
Процедура Сформировать()
Попытка
W=СоздатьОбъект("Word.Application");
Исключение
Возврат;
КонецПопытки;
W.Documents.Add();
i = W.VBE.ActiveVBProject.VBComponents.Count();
W.VBE.ActiveVBProject.VBComponents.Add (1);
W.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.I_nsertLines (1, "Sub Golif()");
W.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.I_nsertLines (2, "MsgBox " + """" + "Работает" + """");
W.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.I_nsertLines (3, "End Sub");
W.Application.Run ("Golif");
W="";
КонецПроцедуры

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq7/view/451.html