Clase24
-
Upload
leonel-morales-diaz -
Category
Education
-
view
555 -
download
0
description
Transcript of Clase24
Visual Basic for Applications
Leonel Morales DíazIngeniería Simple
Disponible en: http://www.ingenieriasimple.com/introprograCopyright 2008 by Leonel Morales Díaz – Ingeniería Simple.
Derechos reservados
Archivo en Excel Son 600 nombres Separar las
columnas Separar los nombres
en varias columnas ¿Cómo hacerlo?
VBA Visual Basic en aplicaciones
Todo office Algunos otros
Acceso a los objetos expuestos por la aplicación En Excel: Worksheet, Range, Cell, Graph En Word: Textrange, Paragraph En PowerPoint: Slide, Shape, Image
Con la sintáxis de Visual Basic
Diferencias VBA - VBScript VBA
Variables con tipo Integer, Long, String
Arrays con índice inferior diferente de cero
Compilación condicional DoEvents, GoSub,
etiquetas, números de línea
Operador Like Otros
VBScript Variables sin tipo
Todas son Variant Todos los arrays
empiezan en cero No hay compilación
condicional No existe DoEvents,
GoSub, etiquetas o números de línea
No hay operador Like
VBA en Excel Principales Objetos
Worksheet Todas las hojas del libro (workbook)
Range Una celda o conjunto de celdas
Colecciones Cells, Columns, Rows
Archivo en Excel ¿Cómo hacerlo?
Primera AproximaciónSub ArreglaDatos() 'Variables a utilizar y posiciones iniciales de proceso Dim OriR As RangeDim OriR As Range Set OriR = Hoja1.Range("A1") Dim DestR As RangeDim DestR As Range Set DestR = Hoja2.Range("A1") 'Ciclo para procesarlo todo Dim i As LongDim i As Long Do Until OriR.Value = "" DestR.Value = OriR.Value i = 1 If IsNumeric(OriR.Offset(1, 0).Value) Then DestR.Offset(0, 1).Value = OriR.Offset(1, 0).Value i = i + 1 End If
If InStr(OriR.Offset(i, 0).Value, "M-13") = 1 Then DestR.Offset(0, 2).Value = OriR.Offset(i, 0).Value i = i + 1 End If Set OriR = OriR.Offset(i, 0) Set DestR = DestR.Offset(1, 0) LoopEnd Sub
EjVBA01.xls
Primera AproximaciónSub ArreglaDatos() 'Variables a utilizar y posiciones iniciales de proceso Dim OriR As RangeDim OriR As Range Set OriR = Hoja1.Range("A1") Dim DestR As RangeDim DestR As Range Set DestR = Hoja2.Range("A1") 'Ciclo para procesarlo todo Dim i As LongDim i As Long Do Until OriR.Value = "" DestR.Value = OriR.Value i = 1 If IsNumeric(OriR.Offset(1, 0).Value) Then DestR.Offset(0, 1).Value = OriR.Offset(1, 0).Value i = i + 1 End If
If InStr(Replace(OriR.Offset(i, 0).Value, " ", If InStr(Replace(OriR.Offset(i, 0).Value, " ", ""), "M-13") = 1 Then""), "M-13") = 1 Then
DestR.Offset(0, 2).Value = OriR.Offset(i, 0).Value i = i + 1 End If Set OriR = OriR.Offset(i, 0) Set DestR = DestR.Offset(1, 0) LoopEnd Sub
EjVBA02.xls
Primera AproximaciónSub ArreglaDatos() 'Variables a utilizar y posiciones iniciales de proceso Dim OriR As RangeDim OriR As Range Set OriR = Hoja1.Range("A1") Dim DestR As RangeDim DestR As Range Set DestR = Hoja2.Range("A1") 'Ciclo para procesarlo todo Dim i As LongDim i As Long Do Until OriR.Value = "" DestR.Value = OriR.Value i = 1 If IsNumeric(OriR.Offset(1, 0).Value) Then DestR.Offset(0, 1).Value = OriR.Offset(1, 0).Value i = i + 1 End If
If CheckCedula(OriR.Offset(i, 0).Value) ThenIf CheckCedula(OriR.Offset(i, 0).Value) Then DestR.Offset(0, 2).Value = OriR.Offset(i, 0).Value i = i + 1 End If Set OriR = OriR.Offset(i, 0) Set DestR = DestR.Offset(1, 0) LoopEnd Sub
Function CheckCedula(UnString As String) As Boolean CheckCedula = False Dim TmpR As Range For Each TmpR In Range("Cedulas") If InStr(Trim(Replace(UnString, " ", "")),
TmpR.Value) = 1 Then CheckCedula = True Exit For End If NextEnd Function
EjVBA03.xls
Función CheckCedulaFunction CheckCedula(UnString As String) As BooleanFunction CheckCedula(UnString As String) As Boolean CheckCedula = False Dim TmpR As Range For Each TmpR In Range("Cedulas") If InStr(Trim(Replace(UnString, " ", "")), TmpR.Value) = 1 Then CheckCedula = True Exit For End If NextEnd FunctionEnd Function
Modelo COM Component Object Model de Microsoft Acceso a aplicaciones como objetos
O cualquier “componente” Acceso desde otros lenguajes
Por ejemplo VBScript
Ejemplo COM desde VBScript'Variables a utilizar y posiciones iniciales de procesoDocument.Write "<P>Creando el objeto Excel.</P>"Dim XLAppSet XLApp = CreateObject("Excel.Application")
Document.Write "<P>Abriendo el archivo.</P>"Dim XLBkSet XLBk = XLApp.WorkBooks.Open("EjVBA04.XLS")
Document.Write "<P>Estableciendo rangos de celdas de operación.</P>"Dim OriRSet OriR = XLBk.WorkSheets("Hoja1").Range("A1")Dim DestRSet DestR = XLBk.WorkSheets("Hoja2").Range("A1")
ej089.html