CyberSecII Ответов: 1

Есть ли какой-нибудь способ добавить макрос программно в документ doc(word)?


I there any way to add a macro programmatically to a doc(Word) document and then save it?


Что я уже пробовал:

Microsoft.Office.Interop.Word.Application newApp = new Microsoft.Office.Interop.Word.Application();
newApp.Visible = false;
object Unknown = Type.Missing;
var Source = filePath;
var doc = newApp.Documents.Open(Source);

var project = doc.VBProject;
var module = project.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule);

var macro = @"
Public Sub DoKbTest()
MsgBox ""Hello""
End Sub

Public Sub DoKbTestWithParameter(ByVal msg As String)
MsgBox msg
End Sub
";
module.CodeModule.AddFromString(macro);
//module.CodeModule.AddFromFile(vba);
newApp.Run("DoKbTest");
doc.SaveAs(finaldoc);

ZurdoDev

Посмотрите, можете ли вы записать макрос, создающий макрос, и тогда вы получите свой ответ.

CyberSecII

хорошо, я нашел способ сделать это, но теперь я хочу сохранить свой документ, но с моим кодом он сохраняет документ, но макрос отсутствует.

Slacker007

Я думал, что есть расширение файла для word, которое указывает, что это документ word с макросами? прошло почти 10 лет с тех пор, как я работал с Word automation, макросами и т. д.

CyberSecII

Спасибо Slacker007 за то, что нашли время переиграть для меня!! Я исправил свой код!!

1 Ответов

Рейтинг:
5

CyberSecII

Этот ответ не работает и это не C#,спасибо, что нашли время, чтобы опубликовать решение!Ссылки размещены https://www.codeproject.com/Questions/5269728/Using-VB-NET-to-add-automatically-macro-code-into[^] тоже не работает.Можете ли вы опубликовать пример кода на C#, чтобы я мог его увидеть?

То, что я хочу, это код, чтобы сделать это:
Создайте документ doc и добавьте к нему пользовательский VBA в C#, и это просто нажав кнопку на моей форме!

Richard MacCutchan

Извините, это была единственная ссылка, которую я смог найти. Но превращение VB.NET для C# это довольно просто, так как оба языка используют очень похожий синтаксис, и все же .Чистые классы.

CyberSecII

Я перешел по ссылке и создал аналогичный код, но теперь мне нужно сохранить документ doc с моим макросом в нем, как я могу это сделать?

Richard MacCutchan

Используйте метод Save или SaveAs.

CyberSecII

посмотрите на то, что я пробовал: раздел
я сделал это, но документ сохраняется без макроса в нем.
Вы видите, что я делаю неправильно в коде?

Richard MacCutchan

Извините, это проблема Microsoft. Попробуйте один из их форумов.

CyberSecII

я получил его сейчас,но теперь я столкнулся с другой ошибкой :)..я хочу, чтобы документ автоматически открывал мой макрос.

Richard MacCutchan

Вы можете сделать это гораздо быстрее, просто отредактировав документ.

CyberSecII

Я знаю.Но это не то, чего я хочу..Я хочу совсем другого!

Richard MacCutchan

Извините, но я не могу предложить никаких других предложений.

CyberSecII

Ты уже это сделал!! Спасибо!!