Daniel Chang [MSFT] escribió el 04/11/2004 03:44 :
> Hola Enrique,
>
> Antes que nada, debes habilitar la opción "Confiar en el acceso a
> proyectos
> de Visual Basic" en la pestaña "Editores de confianza" en
> Herramientas >
> Macro > Seguridad... en Excel. Luego sales de Excel para que la
> opción tenga
> efecto.
>
> En tu proyecto C# en Visual Studio, agrega una referencia a Excel (me
> supongo que tienes instalado el PIA para Excel). Luego prueba el siguiente
> código que te doy como ejemplo:
>
> using System;
> using vbe = Microsoft.Vbe.Interop;
> using xl = Microsoft.Office.Interop.Excel;
>
> namespace ExcelVbaTest
> {
> class Class1
> {
> [STAThread]
> static void Main(string[] args)
> {
> //Cargar Excel y agregar un libro
> xl.ApplicationClass xlApp = new xl.ApplicationClass();
> xlApp.Visible = true;
> xlApp.Workbooks.Add(Type.Missing);
>
> //Agregar un modulo de VB y el codigo del archivo vbaTest.txt
> vbe.VBComponentClass vbComp = (vbe.VBComponentClass)
>
xlApp.VBE.ActiveVBProject.VBComponents.Add(vbe.vbext_ComponentType.vbext_ct_StdModule);
> vbComp.CodeModule.AddFromFile(@"C:vbaTest.txt");
>
> //Ejecutar la macro: Ejemplo
> xlApp.Run("Ejemplo", Type.Missing, Type.Missing, Type.Missing,
> Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
> Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
> Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
> Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
> Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
> Type.Missing, Type.Missing);
> }
> }
> }
>
>
> En vbaTest.txt, tengo la siguiente macro:
> Sub Ejemplo()
> MsgBox "Funciona!"
> End Sub
>
>
> Espero que esto te sirva.
>
> Saludos,
>
> Daniel
>
> Este mensaje se proporciona "como está" sin garantías
> de ninguna clase, y no
> otorga ningún derecho.
> Use of included script samples are subject to the terms specified at
>
http://www.microsoft.com/info/cpyright.htm
>
>
>
> "Enrique" wrote in message
> news:
>> Hola, estoy intentando ejecutar una macro de Excel desde C#, pero no
>> puedo.
>> No quiero ejecutar una macro q ya está en el .xls, lo q quiero es pasar
>> yo
>> el string con la macro y q se ejecute en Excel.
>> Es q tengo varios ficheros excel y no puedo ni quiero añadirles macros.
>>
>> La macro la he creado en excel pero el código lo tengo en un xml o
>> tengo
>> el 'string' directamente en el codigo.
>>
>> Se puede hacer? Pq toda la documentación q he visto es para ejecutar
>> macros q están incluidas en el fichero .xls. Con q función
>> puedo hacer
>> esto?
>>
>> Gracias.
>>
>
Excelente aporte, funciona sin ningun problema.