Inicio > .Net, C#, Computación, Informática, Programación, Visual studio 2010 > Ejecutar macros de office en c# .net

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

  1. noricosky
    septiembre 17, 2012 a las 8:27 pm

    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

  2. julio 12, 2015 a las 12:36 am

    si seras pendejo! en c# baboso jajaja tas bien guey!

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: