none
ejecutar método macro excel desde c# escritorio RRS feed

  • Pregunta

  • Estimados:

    les cuento desde un programa de escritorio creado en c#

    necesito llamar a una planilla de excel con macros y ejecutar un método especifico, con o sin parametros de entrada 

    como se puede ejecutar un metodo desde c# escritorio, es mi consulta?.

    el método de el macro es publico y no debería tener problema con aquello,

    uso visual studio 2005, sql server 2005

    Saludos y muchas gracias de ante mano.

     

    un ejemplo de metodo de macro excel basico:

     

    Public Sub prueba(ByVal n As Long)
    
        MsgBox n
    
    End Sub
    
    
    

     

     

    jueves, 11 de noviembre de 2010 15:04

Respuestas

  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using Microsoft.CSharp;
    using Microsoft;
    using Microsoft.Office.Interop.Excel;


    namespace prueba_macro
    {
        public partial class Form1 : Form
        {
           

            public Form1()
            {
                InitializeComponent();
                
            }

            private void button1_Click(object sender, EventArgs e)
            {
                string excel = "C:\\Libro1.xls";
                string nombrecito = "";
                EjecutarMacro(excel, nombrecito);
              
            }

            private void EjecutarMacro(string archivoExcel, string nombreMacro)
            {
                ApplicationClass excel = new ApplicationClass();

                object missing;
                try
                {
                    excel.Workbooks.get_Item("Libro1.xls").Close(false, "", "");
                }
                catch (Exception es)
                {
                }

                Workbooks books;
                _Workbook book;
               
                

                missing = System.Reflection.Missing.Value;

                
                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.Application.Run("vistaFormatoCliente", 54038, missing, missing, missing, missing, missing, missing, missing, missing,
                                missing, missing, missing, missing,missing, missing, missing, missing, missing, missing, missing, missing,
                                missing, missing, missing, missing,missing,missing,missing,missing,missing);

               
                book = null;
                books = null;
                excel = null;
            }
             
        }
    }
    jueves, 11 de noviembre de 2010 19:14