Невозможно запустить указанный макрос Word 2010 и c # - PullRequest
0 голосов
/ 17 января 2012

Я пытаюсь запустить макрос слова, используя c #.

object oMissing = System.Reflection.Missing.Value;


           // Create an instance of Word, make it visible,
           // and open Doc1.doc.
           ApplicationClass oWord = new ApplicationClass();
           oWord.Visible = true;
           Documents oDocs = oWord.Documents;
           object oFile = @"E:\doc1.doc";

           // If the Microsoft Word 10.0 Object Library is referenced
           // use the following code.
           //_Document oDoc = oDocs.Open(ref oFile, ref oMissing,
           //    ref oMissing, ref oMissing, ref oMissing, ref oMissing,
           //    ref oMissing, ref oMissing, ref oMissing, ref oMissing,
           //    ref oMissing, ref oMissing, ref oMissing, ref oMissing,
           //    ref oMissing);

           // If the Microsoft Word 11.0 Object Library is referenced comment
           // the previous line of code and uncomment the following code.
           _Document oDoc = oDocs.Open(ref oFile, ref oMissing,
           ref oMissing, ref oMissing, ref oMissing, ref oMissing,
           ref oMissing, ref oMissing, ref oMissing, ref oMissing,
           ref oMissing, ref oMissing, ref oMissing, ref oMissing,
           ref oMissing, ref oMissing);

           // Run the macros.
           RunMacro(oWord, new Object[] { "ExternalizeFromApp" });


           // Quit Word and clean up.
           oDoc.Close(ref oMissing, ref oMissing, ref oMissing);
           System.Runtime.InteropServices.Marshal.ReleaseComObject(oDoc);
           oDoc = null;
           System.Runtime.InteropServices.Marshal.ReleaseComObject(oDocs);
           oDocs = null;
           oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
           System.Runtime.InteropServices.Marshal.ReleaseComObject(oWord);
           oWord = null;

И метод RunMacro

 private void RunMacro(object oApp, object[] oRunArgs)
    {
        oApp.GetType().InvokeMember("Run",
            System.Reflection.BindingFlags.Default |
            System.Reflection.BindingFlags.InvokeMethod,
            null, oApp, oRunArgs);
    }

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

UPDATE:

System.Reflection.TargetInvocationException было обнаружено Сообщение = "Исключение было сгенерировано целью вызова." Источник = "mscorlib" Трассировки стека: at System.RuntimeType.InvokeDispMethod (имя строки, BindingFlags invokeAttr, цель объекта, аргументы объекта [], логическое значение [] byrefModifiers, культура Int32, строка [] namedParameters) в System.RuntimeType.InvokeMember (имя строки, BindingFlags bindingFlags, связыватель связывания, объектная цель, Object [] provideArgs, модификаторы ParameterModifier [], CultureInfo culture, String [] namedParams) в System.Type.InvokeMember (имя строки, BindingFlags invokeAttr, связыватель Binder, цель объекта, аргументы объекта []) в IMGDoc2Pdf.Main.RunMacro (Object oApp, Object [] oRunArgs) в C: \ Users \ xxx \ yyy \ Visual Studio 2008 \ Projects \ Project1 \ Project \ app \ Main.cs: строка 639 InnerException: System.Runtime.InteropServices.COMException HelpLink = "wdmain11.chm # 37401" Сообщение = "Невозможно запустить указанный макрос" Источник = "Microsoft Word" ErrorCode = -2147352573 InnerException:

Может кто-нибудь сказать мне, как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...