Visual Basic for Applications Leonel Morales Daz Ingeniera
Visual Basic for Applications Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple. com Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados Disponible en: http: //www. ingenieriasimple. com/introprogra
Archivo en Excel n n Son 600 nombres Separar las columnas Separar los nombres en varias columnas ¿Cómo hacerlo?
VBA n Visual Basic en aplicaciones n n n Acceso a los objetos expuestos por la aplicación n n Todo office Algunos otros En Excel: Worksheet, Range, Cell, Graph En Word: Textrange, Paragraph En Power. Point: Slide, Shape, Image Con la sintáxis de Visual Basic
Diferencias VBA - VBScript n VBA n n Variables con tipo n n n VBScript n Integer, Long, String Arrays con índice inferior diferente de cero Compilación condicional Do. Events, Go. Sub, etiquetas, números de línea Operador Like Otros Variables sin tipo n n n Todas son Variant Todos los arrays empiezan en cero No hay compilación condicional No existe Do. Events, Go. Sub, etiquetas o números de línea No hay operador Like
VBA en Excel n Principales Objetos n Worksheet n n Range n n Todas las hojas del libro (workbook) Una celda o conjunto de celdas Colecciones n Cells, Columns, Rows
Archivo en Excel n ¿Cómo hacerlo?
Primera Aproximación Sub Arregla. Datos() 'Variables a utilizar y posiciones iniciales de proceso Dim Ori. R As Range Set Ori. R = Hoja 1. Range("A 1") Dim Dest. R As Range Set Dest. R = Hoja 2. Range("A 1") 'Ciclo para procesarlo todo Dim i As Long Do Until Ori. R. Value = "" Dest. R. Value = Ori. R. Value i=1 If Is. Numeric(Ori. R. Offset(1, 0). Value) Then Dest. R. Offset(0, 1). Value = Ori. R. Offset(1, 0). Value i=i+1 End If If In. Str(Ori. R. Offset(i, 0). Value, "M-13") = 1 Then Dest. R. Offset(0, 2). Value = Ori. R. Offset(i, 0). Value i=i+1 End If Set Ori. R = Ori. R. Offset(i, 0) Set Dest. R = Dest. R. Offset(1, 0) Loop End Sub Ej. VBA 01. xls
Primera Aproximación Sub Arregla. Datos() 'Variables a utilizar y posiciones iniciales de proceso Dim Ori. R As Range Set Ori. R = Hoja 1. Range("A 1") Dim Dest. R As Range Set Dest. R = Hoja 2. Range("A 1") 'Ciclo para procesarlo todo Dim i As Long Do Until Ori. R. Value = "" Dest. R. Value = Ori. R. Value i=1 If Is. Numeric(Ori. R. Offset(1, 0). Value) Then Dest. R. Offset(0, 1). Value = Ori. R. Offset(1, 0). Value i=i+1 End If If In. Str(Replace(Ori. R. Offset(i, 0). Value, " ", ""), "M-13") = 1 Then Dest. R. Offset(0, 2). Value = Ori. R. Offset(i, 0). Value i=i+1 End If Set Ori. R = Ori. R. Offset(i, 0) Set Dest. R = Dest. R. Offset(1, 0) Loop End Sub Ej. VBA 02. xls
Primera Aproximación Sub Arregla. Datos() 'Variables a utilizar y posiciones iniciales de proceso Dim Ori. R As Range Set Ori. R = Hoja 1. Range("A 1") Dim Dest. R As Range Set Dest. R = Hoja 2. Range("A 1") 'Ciclo para procesarlo todo Dim i As Long Do Until Ori. R. Value = "" Dest. R. Value = Ori. R. Value i=1 If Is. Numeric(Ori. R. Offset(1, 0). Value) Then Dest. R. Offset(0, 1). Value = Ori. R. Offset(1, 0). Value i=i+1 End If If Check. Cedula(Ori. R. Offset(i, 0). Value) Then Dest. R. Offset(0, 2). Value = Ori. R. Offset(i, 0). Value i=i+1 End If Set Ori. R = Ori. R. Offset(i, 0) Set Dest. R = Dest. R. Offset(1, 0) Loop End Sub Function Check. Cedula(Un. String As String) As Boolean Check. Cedula = False Dim Tmp. R As Range For Each Tmp. R In Range("Cedulas") If In. Str(Trim(Replace(Un. String, " ", "")), Tmp. R. Value) = 1 Then Check. Cedula = True Exit For End If Next End Function Ej. VBA 03. xls
Función Check. Cedula Function Check. Cedula(Un. String As String) As Boolean Check. Cedula = False Dim Tmp. R As Range For Each Tmp. R In Range("Cedulas") If In. Str(Trim(Replace(Un. String, " ", "")), Tmp. R. Value) = 1 Then Check. Cedula = True Exit For End If Next End Function
Modelo COM n n Component Object Model de Microsoft Acceso a aplicaciones como objetos n n O cualquier “componente” Acceso desde otros lenguajes n Por ejemplo VBScript
Ejemplo COM desde VBScript 'Variables a utilizar y posiciones iniciales de proceso Document. Write "<P>Creando el objeto Excel. </P>" Dim XLApp Set XLApp = Create. Object("Excel. Application") Document. Write "<P>Abriendo el archivo. </P>" Dim XLBk Set XLBk = XLApp. Work. Books. Open("Ej. VBA 04. XLS") Document. Write "<P>Estableciendo rangos de celdas de operación. </P>" Dim Ori. R Set Ori. R = XLBk. Work. Sheets("Hoja 1"). Range("A 1") Dim Dest. R Set Dest. R = XLBk. Work. Sheets("Hoja 2"). Range("A 1") ej 089. html
- Slides: 12