Сегодня у меня есть следующий макрос в Word
Sub comparedocs()
Dim arq1 As String
Dim arq2 As String
Dim itmDocProp As DocumentProperty
For Each prop In ActiveDocument.CustomDocumentProperties
If prop.Name = "OrPath" Then
arq1 = prop.Value
ElseIf prop.Name = "NewPath" Then
arq2 = prop.Value
End If
Next
If arq1 = "" Or arq2 = "" Then
MsgBox "Não encontramos as propiedades necessarias"
Exit Sub
End If
Set wrd = GetObject(, "Word.Application")
MsgBox arq2
MsgBox arq1
'wrd.Documents.Open arq2
'wrd.Documents.Open arq1
'Application.CompareDocuments OriginalDocument:=Documents(arq1), RevisedDocument:=Documents(arq2), _
'Destination:=wdCompareDestinationOriginal, Granularity:= _
' wdGranularityWordLevel, CompareFormatting:=False, CompareCaseChanges:= _
' True, CompareWhitespace:=False, CompareTables:=True, CompareHeaders:=True _
' , CompareFootnotes:=True, CompareTextboxes:=True, CompareFields:=True, _
' CompareComments:=True, CompareMoves:=True, RevisedAuthor:="Autor", _
' IgnoreAllComparisonWarnings:=False
'ActiveDocument.TrackRevisions = Not ActiveDocument.TrackRevisions
' ActiveWindow.ShowSourceDocuments = wdShowSourceDocumentsBoth
End Sub
Мне нужно вставить этот макрос в приложение Word VSTO и запустить его, когда пользователь нажимает кнопку, ниже приведен код, который я пытаюсь запустить, но он работает только тогда, когда макрос уже существует в слове. Я хотел бы вставить макрос вместе с дополнением, так как он будет установлен для нескольких клиентов
public void OnTableButton(Office.IRibbonControl control)
{
RunMacro(Globals.ThisAddIn.Application, new object[] { "comparedocs" });
}
private void RunMacro(object oApp, object[] oRunArgs)
{
oApp.GetType().InvokeMember("Run",
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.InvokeMethod,
null, oApp, oRunArgs);
}