Skip to content

Correr una macros de excel via visual basic.net

by en 15 marzo, 2012

con el siguente algoritmo se puede ejecutar una maros de excel desde visual basic. Muy util al momento de querer guardar la informacion de una manera mas ordenada, generar reportes, etc…

este es el codigo:

Imports Excel = Microsoft.Office.Interop.Excel

''' <summary>
''' clase definida para el manejo de excel
''' </summary>
''' <remarks></remarks>
Public Class ejecutarMacros
 ''' <summary>
 ''' ejecuta una macros de excel
 ''' </summary>
 ''' <param name="carpetaObjetivo">carpeta donde se guarda el archivo</param>
 ''' <param name="Titulo">titulo con el que se guarda el archivo</param>
 ''' <param name="macros">archivo xlsm (excel que soporta macros)</param>
 ''' <returns>retorna un entero segun exito o falla de la ejecucion</returns>
 ''' <remarks></remarks>
 Public Function macro(ByVal carpetaObjetivo As String, ByVal Titulo As String, ByVal macros As String) As Integer
 Try
 Dim oExcel As Excel.ApplicationClass
 Dim oBook As Excel.WorkbookClass
 Dim oBooks As Excel.Workbooks

'inicia excel y el libro de trabajo
 oExcel = CreateObject("Excel.Application")
 oExcel.Visible = True
 oBooks = oExcel.Workbooks
 oBook = oBooks.Open(macros)
 'Corre la macro
 oExcel.Run("macro", carpetaObjetivo & "\" & Titulo & ".csv", Titulo & ".csv")
 'gaurda el archivo con nombre y fecha
 Dim fecha As Date
 fecha = Date.Now
 Dim dia As String
 Dim nombre As String
 dia = fecha.Day & "-" & fecha.Month & "-" & fecha.Year
 nombre = carpetaObjetivo & "\" & Titulo & dia & ".xlsm"
 oBook.SaveAs(nombre)
 'cierra excel
 oBook.Close(False)
 System.Runtime.InteropServices.Marshal.ReleaseComObject(oBook)
 oBook = Nothing
 System.Runtime.InteropServices.Marshal.ReleaseComObject(oBooks)
 oBooks = Nothing
 oExcel.Quit()
 System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel)
 oExcel = Nothing
 Return 0
 Catch ex As Exception
 Return 1
 End Try
 End Function
End Class
One Comment
  1. Imports Excel = Microsoft.Office.Interop.Excel ‘ AGREGAR ESTAS REFERENCIAS AL PROYECTO
    Imports Microsoft.Vbe.Interop

    Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    MACRO()
    End Sub

    Private Sub MACRO()
    Dim xlApp As Object
    Dim xlWb As Excel.Workbook
    Dim xlMod As Microsoft.Vbe.Interop.VBComponent

    Try
    xlApp = New Microsoft.Office.Interop.Excel.Application
    xlWb = xlApp.Workbooks.Add

    xlMod = xlWb.VBProject.VBComponents.Add(Microsoft.Vbe.Interop.vbext_ComponentType.vbext_ct_StdModule)
    xlMod.Name = “Module1”

    Dim macroCode As String = _
    “Public Sub Main()” & vbCrLf & _
    ” Sheet1.Range(” & Chr(34) & “A1” & Chr(34) & “).Select” & vbCrLf & _
    ” MsgBox ” & Chr(34) & “Hola” & Chr(34) & vbCrLf & _
    “End Sub”

    xlMod.CodeModule.AddFromString(macroCode)

    xlApp.Visible = True
    xlApp.Application.Run(“Main”)

    GC.Collect()

    Catch ex As Exception
    MsgBox(ex.ToString())
    End Try

    End Sub

    End Class

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: