Acceder a objetos de Excel desde código VBA compilado
Al escribir código para el compilador VBA, debe usar explícitamente el objeto Application para acceder al modelo de objetos de Excel.
Para una referencia detallada de las propiedades y los métodos disponibles, consulte la documentación del Microsoft Office Dev Center.
Ejemplos
Section titled “Ejemplos”Referenciar un rango (Range)
Section titled “Referenciar un rango (Range)”Para referenciar una celda o un rango de celdas en su hoja de cálculo, debe anteponer Application al objeto Range.
- VBA estándar:
Range("A1:A4").Value = 2 - VBA compilado:
Application.Range("A1:A4").Value = 2
Usar funciones de hoja de cálculo
Section titled “Usar funciones de hoja de cálculo”Para usar las funciones de hoja de cálculo de Excel, debe usar el objeto Application.WorksheetFunction.
Str1 = Application.WorksheetFunction.VLookup(Param1.ComboBox1, Application.Range("A2:C8"), 2, False)
Ejemplo completo: convertir una macro
Section titled “Ejemplo completo: convertir una macro”Aquí tiene una macro VBA estándar:
Sub test() Dim qty As Integer Dim price As Single, amount As Single Range("A5").Value = "Item" ActiveCell.Offset(1, 0).Select ActiveCell.Value = InputBox("Enter the name of item") ActiveCell.Offset(0, 1).Select price = InputBox("Enter the price") ActiveCell.Value = price ' ... and so onEnd SubAquí tiene el mismo código modificado para el compilador VBA de XLS Padlock. Observe la adición del objeto Application y los parámetros explícitos para InputBox.
Sub test(Param1) Dim qty As Integer Dim price As Single, amount As Single Application.Range("A5").Value = "Item" Application.ActiveCell.Offset(1, 0).Select Application.ActiveCell.Value = Application.InputBox("Enter the name of item", "Name", "") Application.ActiveCell.Offset(0, 1).Select price = Application.InputBox("Enter the price", "Price", "") Application.ActiveCell.Value = price ' ... and so onEnd SubSu módulo VBA original se modificaría entonces para llamar a la versión compilada:
Sub test() res = CallXLSPadlockVBA("test", "")End Sub