简体   繁体   中英

Run Word Macro in a C # or VBA VSTO add-in

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM