La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Visual Basic for Applications 3 de Mayo de 2007. Archivo en Excel Son 600 nombres Separar las columnas Separar los nombres en varias columnas ¿Cómo hacerlo?

Presentaciones similares


Presentación del tema: "Visual Basic for Applications 3 de Mayo de 2007. Archivo en Excel Son 600 nombres Separar las columnas Separar los nombres en varias columnas ¿Cómo hacerlo?"— Transcripción de la presentación:

1 Visual Basic for Applications 3 de Mayo de 2007

2 Archivo en Excel Son 600 nombres Separar las columnas Separar los nombres en varias columnas ¿Cómo hacerlo?

3 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

4 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

5 VBA en Excel Principales Objetos Worksheet Todas las hojas del libro (workbook) Range Una celda o conjunto de celdas Colecciones Cells, Columns, Rows

6 Archivo en Excel ¿Cómo hacerlo?

7 Primera Aproximación Sub ArreglaDatos() 'Variables a utilizar y posiciones iniciales de proceso Dim OriR As Range Set OriR = Hoja1.Range("A1") Dim DestR As Range Set DestR = Hoja2.Range("A1") 'Ciclo para procesarlo todo Dim 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) Loop End Sub EjVBA01.xls

8 Primera Aproximación Sub ArreglaDatos() 'Variables a utilizar y posiciones iniciales de proceso Dim OriR As Range Set OriR = Hoja1.Range("A1") Dim DestR As Range Set DestR = Hoja2.Range("A1") 'Ciclo para procesarlo todo Dim 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, " ", ""), "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) Loop End Sub EjVBA02.xls

9 Primera Aproximación Sub ArreglaDatos() 'Variables a utilizar y posiciones iniciales de proceso Dim OriR As Range Set OriR = Hoja1.Range("A1") Dim DestR As Range Set DestR = Hoja2.Range("A1") 'Ciclo para procesarlo todo Dim 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) Then If 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) Loop End 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 Next End Function EjVBA03.xls

10 Función CheckCedula 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 Next End Function

11 Modelo COM Component Object Model de Microsoft Acceso a aplicaciones como objetos O cualquier componente Acceso desde otros lenguajes Por ejemplo VBScript

12 Ejemplo COM desde VBScript 'Variables a utilizar y posiciones iniciales de proceso Document.Write " Creando el objeto Excel. " Dim XLApp Set XLApp = CreateObject("Excel.Application") Document.Write " Abriendo el archivo. " Dim XLBk Set XLBk = XLApp.WorkBooks.Open("EjVBA04.XLS") Document.Write " Estableciendo rangos de celdas de operación. " Dim OriR Set OriR = XLBk.WorkSheets("Hoja1").Range("A1") Dim DestR Set DestR = XLBk.WorkSheets("Hoja2").Range("A1") ej089.html


Descargar ppt "Visual Basic for Applications 3 de Mayo de 2007. Archivo en Excel Son 600 nombres Separar las columnas Separar los nombres en varias columnas ¿Cómo hacerlo?"

Presentaciones similares


Anuncios Google