Ejecutar macros de office en c# .net

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

2 comentarios en «Ejecutar macros de office en c# .net»

  1. 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

Los comentarios están cerrados.