在C#或VBA VSTO加载项中运行Word宏



今天我在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补充中,并在用户单击按钮时运行它,下面是我试图运行的代码,但只有当宏已经存在于Word中时它才能工作。我想将宏与补充一起插入,因为它将为几个客户安装

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);
}

您的10 入门

public void OnTableButton(Office.IRibbonControl control)
{
//RunMacro(Globals.ThisAddIn.Application, new object[] { "comparedocs" });
comparedocs();
}
void comparedocs()
{
string arq1 = "";
string arq2 = "";
//Microsoft.Office.Core.DocumentProperty ItmDocProp;
foreach (var prop in Globals.ThisAddIn.Application.ActiveDocument.CustomDocumentProperties)
{
if (prop.Name == "OrPath")
{
arq1 = prop.Value;
}
else if (prop.Name == "NewPath")
{
arq2 = prop.Value;
}
}
if (arq1 == "" || arq2 == "")
{
MessageBox.Show("Não encontramos as propiedades necessarias");
return;
}
var wrd = Globals.ThisAddIn.Application;
MessageBox.Show(arq2);
MessageBox.Show(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
}

最新更新