Cómo crear y llamar a una macro de Excel mediante programación desde VB

Seleccione idioma Seleccione idioma
Id. de artículo: 194611 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

En este artículo muestra cómo crear una macro de VBA de Microsoft Excel mediante programación desde Visual Basic, llamarlo y asociarlo con un botón de barra de herramientas.

Más información

Siga estos pasos para crear la aplicación de ejemplo:
  1. Cree un proyecto Standard EXE en Visual Basic. Se creará Form1 de manera predeterminada.
  2. Haga clic en referencias en el menú proyecto y compruebe "Microsoft Visual Basic para extensibilidad de aplicaciones".
  3. Agregue un CommandButton a Form1.
  4. Copie y pegue el código siguiente a ventana de código del formulario:
          Private Sub Command1_Click()
           ' Start Excel
           Dim xlapp As Object 'Excel.Application
           Set xlapp = CreateObject("Excel.Application")
    
           ' Make it visible...
           xlapp.Visible = True
    
           ' Add a new workbook
           Dim xlbook As Object 'Excel.Workbook
           Set xlbook = xlapp.Workbooks.Add
    
           ' Add a module
           Dim xlmodule As Object 'VBComponent
           Set xlmodule = xlbook.VBProject.VBComponents.Add(1) 'vbext_ct_StdModule
    
           ' Add a macro to the module...
           Dim strCode As String
           strCode = _
              "sub MyMacro()" & vbCr & _
              "   msgbox ""Inside generated macro!!!"" " & vbCr & _
              "end sub"
           xlmodule.CodeModule.AddFromString strCode
    
    
           ' Run the new macro!
           xlapp.Run "MyMacro"
    
           ' ** Create a new toolbar with a button to fire macro...
           ' Add a new toolbar...
           Dim cbs As Object 'CommandBars
           Dim cb As Object 'CommandBar
           Set cbs = xlapp.CommandBars
           Set cb = cbs.Add("MyCommandBar", 1, , True) '1=msoBarTop
           cb.Visible = True
    
           ' Make it visible & add a button...
           Dim cbc As Object 'CommandBarControl
           Set cbc = cb.Controls.Add(1) '1=msoControlButton
    
           ' Assign our button to our macro
           cbc.OnAction = "MyMacro"
    
           ' Set text...
           cbc.Caption = "Call MyMacro()"
    
           ' Set Face image...
           ' 51 = white hand
           ' 25 = glasses
           ' 34 = ink dipper
           ' etc...
           cbc.FaceId = 51
    
           ' Pause so you can inspect results...
           MsgBox "All done, click me to continue...", vbMsgBoxSetForeground
    
           ' Remember to release module
           Set xlmodule = Nothing
    
           ' Clean up
           xlbook.Saved = True
           xlapp.Quit
          End Sub
    						
  5. Ejecute la aplicación. Debería ver Microsoft Excel inicio, seguido por el siguiente cuadro de mensaje "en genera la macro.." En este momento, está ejecutando código dentro de la macro generada. Haga clic en Aceptar para descartar este cuadro de diálogo y, a continuación, verá un cuadro de diálogo informe "haga clic todo terminado, en me para continuar." Deje esta copia y cambie a Excel. Debe haber una nueva barra de herramientas visible, con un botón con un icono de mano-en blanco. El código de Visual Basic anterior había asociado este botón con la macro MyMacro(), mediante la propiedad OnAction. Al hacer clic en este botón, se llama MyMacro(). Haga clic en él para ver que funcione. Haga clic en al formulario en Visual Basic y haga clic en Aceptar en el cuadro de mensaje "Haga clic todo hecho, en me continuar".

Notas adicionales para Office XP

Las aplicaciones de Office XP tienen una opción de seguridad para permitir acceso mediante programación al modelo de objeto VBA. Si este valor es "off" (valor predeterminado), puede recibir un error ejecutando el código de ejemplo. Para obtener más información acerca de esta configuración y cómo puede corregir el error, consulte el siguiente artículo en Microsoft Knowledge Base:
282830PRB: Denegado acceso mediante programación en Office XP VBA Project

Propiedades

Id. de artículo: 194611 - Última revisión: martes, 23 de enero de 2007 - Versión: 4.4
La información de este artículo se refiere a:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Edición de aprendizaje
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Office XP Developer Edition
  • Microsoft Office 2000 Developer Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
Palabras clave: 
kbmt kbautomation kbhowto KB194611 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 194611

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com