Hola a todos existe una manera de poder ejecutar las macros que hemos realizado en Word, Excel o powerpoint desde código .net aca les dejo el código para lograrlo y lo que necesitamos para cada tipo, tengan en cuenta que una de las condiciones para lograrlo es tener instalado office donde se correrá la macro.
switch (strType.ToLower()) { case "word": Microsoft.Office.Interop.Word.ApplicationClass oWord = default(Microsoft.Office.Interop.Word.ApplicationClass); //inicia la aplicacion de word Type t = Type.GetTypeFromProgID("Word.Application"); oWord = (Microsoft.Office.Interop.Word.ApplicationClass)System.Activator.CreateInstance(t); //crea un objeto de no siempre es necesario //object ooWord = Interaction.CreateObject("Word.Application"); //se abre el documento y se ejecuta la macro si esta configurado para ejecutarse al abrir oWord.Documents.Open(rootApplication); ////corre la macro //oWord.Run("DoKbTest"); ////oWord.Run("DoKbTestWithParameter", "Hello from VB .NET Client"); System.Threading.Thread.Sleep(1000); //sale del documento oWord.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(oWord); oWord = null; break; case "excel": Microsoft.Office.Interop.Excel.ApplicationClass oExcel = default(Microsoft.Office.Interop.Excel.ApplicationClass); //inicia la aplicación de excel Type tExe = Type.GetTypeFromProgID("Excel.Application"); oExcel = (Microsoft.Office.Interop.Excel.ApplicationClass)System.Activator.CreateInstance(tExe); var oBooks = oExcel.Workbooks; //se abre la primera hoja y se ejecuta la macro si esta congiurado asi oBooks.Open(rootApplication); ////corre una macro especifica //oWord.Run("DoKbTest"); ////oWord.Run("DoKbTestWithParameter", "Hello from VB .NET Client"); System.Threading.Thread.Sleep(1000); //salir del documento de excel y liberar el recurso oExcel.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel); oExcel = null; break; case "powerPoint": Microsoft.Office.Interop.PowerPoint.ApplicationClass oPowerP = default(Microsoft.Office.Interop.PowerPoint.ApplicationClass); //se inicia la aplicación de powerpoint Type tPP = Type.GetTypeFromProgID("PowerPoint.Application"); oPowerP = (Microsoft.Office.Interop.PowerPoint.ApplicationClass)System.Activator.CreateInstance(tPP); var oPresentations = oPowerP.Presentations; //abre la macro y se ejecuta inmediatamente si esta configurado de esa manera oPresentations.Open(rootApplication); ////ejecuta la macro especifica //oWord.Run("DoKbTest"); ////oWord.Run("DoKbTestWithParameter", "Hello from VB .NET Client"); System.Threading.Thread.Sleep(1000); //sale el documento de powerpoint oPowerP.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(oPowerP); oExcel = null; break; }
Bien, pero donde lo pegó? Tengo un lumia 900 y no puedo editar un archivo de Excel con macros en el teléfono, valla aparato caro y limitado me arrepiento de no pagar por el galaxi s2
si seras pendejo! en c# baboso jajaja tas bien guey!