Principales respuestas
Ejecutar una macros con c#

Pregunta
-
Hola a todos,
Estoy haciendo una aplicacion en la cual dentro de todo lo que tiene q hacer es ejecutar un modulo de una macros de excel, son algo asi como reportes que tienen que actualizarse diariamente, pero no tengo idea como lo puedo hacer, lo unico que lei por ahi es que tengo q agregar un par de referencias que ya las agregue, pero nada mas, a ver si me pueden ayudar con algun codigo pliz...
Ojala me puedan ayudar...Gracias
Saludos!
Respuestas
-
Sería algo así:
using System.Runtime.InteropServices;
using Microsoft.Office.Interop;
using Microsoft.Office.Interop.Excel;
...
private void EjecutarMacro(string archivoExcel, string nombreMacro)
{
ApplicationClass excel;
Workbooks books;
_Workbook book;
object missing;
missing = System.Reflection.Missing.Value;
excel = new ApplicationClass();
excel.Visible = true;
books = excel.Workbooks;
book = books.Open(archivoExcel, missing, missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing);
excel.GetType().InvokeMember("Run",
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.InvokeMethod,
null, excel, new object[] { nombreMacro });
book.Close(false, missing, missing);
Marshal.ReleaseComObject(book);
Marshal.ReleaseComObject(books);
Marshal.ReleaseComObject(excel);
book = null;
books = null;
excel = null;
}
La referencia que tienes que agregar es a la Microsoft Office Object Library (o bien, Microsoft Excel Object Library), y es una referencia COM.
Saludos.
Todas las respuestas
-
Sería algo así:
using System.Runtime.InteropServices;
using Microsoft.Office.Interop;
using Microsoft.Office.Interop.Excel;
...
private void EjecutarMacro(string archivoExcel, string nombreMacro)
{
ApplicationClass excel;
Workbooks books;
_Workbook book;
object missing;
missing = System.Reflection.Missing.Value;
excel = new ApplicationClass();
excel.Visible = true;
books = excel.Workbooks;
book = books.Open(archivoExcel, missing, missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing);
excel.GetType().InvokeMember("Run",
System.Reflection.BindingFlags.Default |
System.Reflection.BindingFlags.InvokeMethod,
null, excel, new object[] { nombreMacro });
book.Close(false, missing, missing);
Marshal.ReleaseComObject(book);
Marshal.ReleaseComObject(books);
Marshal.ReleaseComObject(excel);
book = null;
books = null;
excel = null;
}
La referencia que tienes que agregar es a la Microsoft Office Object Library (o bien, Microsoft Excel Object Library), y es una referencia COM.
Saludos. -
-
-
Buenas,
he creado una plantilla para crear un complemento office en el qual he introducido una cinta personalizada + un button
la funcion del button sera ejecutar una macro ya instalada en el excel.
He colocado el codigo en una clase.cs
he realizado la llamada a la dicha clase apuntando al metodo EjecutarMacro y me obliga a poner el fichero de la clase.cs en Recurso Incrustado,
el problema que tengo es que no puedo ver la clase !
Si dejo el fichero en Compilacion tengo errores en el codigo que me has facilitado..
ApplicacionClass Excel..
Como lo he hacer ?
Que tipo de proyecto e de generar?