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



Код 1C v 8.х



//Пример показывает как из 1С вызывается MS Word, вставляется макрос и запускается!

//Макрос пишет на листе Добрый день!, https://t.me/odin1C_rus и сохраняет файл в D:/primer.doc



ПримерМакроса = "Sub VBAprimer()

|S_election.TypeText Text:=""Добрый день!""

|Application.Keyboard (1033)

|S_election.TypeText Text:="": https://t.me/odin1C_rus""

|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="";

КонецПроцедуры






✍️ @odin1C_rus