Today I have the following macro in 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
I need to insert this macro into my Word VSTO supplement and run it when the user clicks the button, below is the code I'm trying to run, but it works only when the macro already exists in word I would like to insert the macro together with the supplement as it will be installed for several customers
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);
}
Your starter for 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
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.