SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
2.
Archivo en Excel <ul><li>Son 600 nombres </li></ul><ul><li>Separar las columnas </li></ul><ul><li>Separar los nombres en varias columnas </li></ul><ul><li>¿Cómo hacerlo? </li></ul>
3.
VBA <ul><li>Visual Basic en aplicaciones </li></ul><ul><ul><li>Todo office </li></ul></ul><ul><ul><li>Algunos otros </li></ul></ul><ul><li>Acceso a los objetos expuestos por la aplicación </li></ul><ul><ul><li>En Excel: Worksheet, Range, Cell, Graph </li></ul></ul><ul><ul><li>En Word: Textrange, Paragraph </li></ul></ul><ul><ul><li>En PowerPoint: Slide, Shape, Image </li></ul></ul><ul><li>Con la sintáxis de Visual Basic </li></ul>
4.
Diferencias VBA - VBScript <ul><li>VBA </li></ul><ul><ul><li>Variables con tipo </li></ul></ul><ul><ul><ul><li>Integer, Long, String </li></ul></ul></ul><ul><ul><li>Arrays con índice inferior diferente de cero </li></ul></ul><ul><ul><li>Compilación condicional </li></ul></ul><ul><ul><li>DoEvents, GoSub, etiquetas, números de línea </li></ul></ul><ul><ul><li>Operador Like </li></ul></ul><ul><ul><li>Otros </li></ul></ul><ul><li>VBScript </li></ul><ul><ul><li>Variables sin tipo </li></ul></ul><ul><ul><ul><li>Todas son Variant </li></ul></ul></ul><ul><ul><li>Todos los arrays empiezan en cero </li></ul></ul><ul><ul><li>No hay compilación condicional </li></ul></ul><ul><ul><li>No existe DoEvents, GoSub, etiquetas o números de línea </li></ul></ul><ul><ul><li>No hay operador Like </li></ul></ul>
5.
VBA en Excel <ul><li>Principales Objetos </li></ul><ul><ul><li>Worksheet </li></ul></ul><ul><ul><ul><li>Todas las hojas del libro (workbook) </li></ul></ul></ul><ul><ul><li>Range </li></ul></ul><ul><ul><ul><li>Una celda o conjunto de celdas </li></ul></ul></ul><ul><ul><li>Colecciones </li></ul></ul><ul><ul><ul><li>Cells, Columns, Rows </li></ul></ul></ul>
6.
Archivo en Excel <ul><li>¿Cómo hacerlo? </li></ul>
7.
Primera Aproximación <ul><li>Sub ArreglaDatos() </li></ul><ul><li>'Variables a utilizar y posiciones iniciales de proceso </li></ul><ul><li>Dim OriR As Range </li></ul><ul><li>Set OriR = Hoja1.Range("A1") </li></ul><ul><li>Dim DestR As Range </li></ul><ul><li>Set DestR = Hoja2.Range("A1") </li></ul><ul><li>'Ciclo para procesarlo todo </li></ul><ul><li>Dim i As Long </li></ul><ul><li>Do Until OriR.Value = "" </li></ul><ul><li>DestR.Value = OriR.Value </li></ul><ul><li>i = 1 </li></ul><ul><li>If IsNumeric(OriR.Offset(1, 0).Value) Then </li></ul><ul><li>DestR.Offset(0, 1).Value = OriR.Offset(1, 0).Value </li></ul><ul><li>i = i + 1 </li></ul><ul><li>End If </li></ul><ul><li>If InStr(OriR.Offset(i, 0).Value, "M-13") = 1 Then </li></ul><ul><li>DestR.Offset(0, 2).Value = OriR.Offset(i, 0).Value </li></ul><ul><li>i = i + 1 </li></ul><ul><li>End If </li></ul><ul><li>Set OriR = OriR.Offset(i, 0) </li></ul><ul><li>Set DestR = DestR.Offset(1, 0) </li></ul><ul><li>Loop </li></ul><ul><li>End Sub </li></ul>EjVBA01.xls
8.
Primera Aproximación <ul><li>Sub ArreglaDatos() </li></ul><ul><li>'Variables a utilizar y posiciones iniciales de proceso </li></ul><ul><li>Dim OriR As Range </li></ul><ul><li>Set OriR = Hoja1.Range("A1") </li></ul><ul><li>Dim DestR As Range </li></ul><ul><li>Set DestR = Hoja2.Range("A1") </li></ul><ul><li>'Ciclo para procesarlo todo </li></ul><ul><li>Dim i As Long </li></ul><ul><li>Do Until OriR.Value = "" </li></ul><ul><li>DestR.Value = OriR.Value </li></ul><ul><li>i = 1 </li></ul><ul><li>If IsNumeric(OriR.Offset(1, 0).Value) Then </li></ul><ul><li>DestR.Offset(0, 1).Value = OriR.Offset(1, 0).Value </li></ul><ul><li>i = i + 1 </li></ul><ul><li>End If </li></ul><ul><li>If InStr(Replace(OriR.Offset(i, 0).Value, " ", ""), "M-13") = 1 Then </li></ul><ul><li>DestR.Offset(0, 2).Value = OriR.Offset(i, 0).Value </li></ul><ul><li>i = i + 1 </li></ul><ul><li>End If </li></ul><ul><li>Set OriR = OriR.Offset(i, 0) </li></ul><ul><li>Set DestR = DestR.Offset(1, 0) </li></ul><ul><li>Loop </li></ul><ul><li>End Sub </li></ul>EjVBA02.xls
9.
Primera Aproximación <ul><li>Sub ArreglaDatos() </li></ul><ul><li>'Variables a utilizar y posiciones iniciales de proceso </li></ul><ul><li>Dim OriR As Range </li></ul><ul><li>Set OriR = Hoja1.Range("A1") </li></ul><ul><li>Dim DestR As Range </li></ul><ul><li>Set DestR = Hoja2.Range("A1") </li></ul><ul><li>'Ciclo para procesarlo todo </li></ul><ul><li>Dim i As Long </li></ul><ul><li>Do Until OriR.Value = "" </li></ul><ul><li>DestR.Value = OriR.Value </li></ul><ul><li>i = 1 </li></ul><ul><li>If IsNumeric(OriR.Offset(1, 0).Value) Then </li></ul><ul><li>DestR.Offset(0, 1).Value = OriR.Offset(1, 0).Value </li></ul><ul><li>i = i + 1 </li></ul><ul><li>End If </li></ul><ul><li>If CheckCedula(OriR.Offset(i, 0).Value) Then </li></ul><ul><li>DestR.Offset(0, 2).Value = OriR.Offset(i, 0).Value </li></ul><ul><li>i = i + 1 </li></ul><ul><li>End If </li></ul><ul><li>Set OriR = OriR.Offset(i, 0) </li></ul><ul><li>Set DestR = DestR.Offset(1, 0) </li></ul><ul><li>Loop </li></ul><ul><li>End Sub </li></ul><ul><li>Function CheckCedula(UnString As String) As Boolean </li></ul><ul><li>CheckCedula = False </li></ul><ul><li>Dim TmpR As Range </li></ul><ul><li>For Each TmpR In Range("Cedulas") </li></ul><ul><li>If InStr(Trim(Replace(UnString, " ", "")), TmpR.Value) = 1 Then </li></ul><ul><li>CheckCedula = True </li></ul><ul><li>Exit For </li></ul><ul><li>End If </li></ul><ul><li>Next </li></ul><ul><li>End Function </li></ul>EjVBA03.xls
10.
Función CheckCedula <ul><li>Function CheckCedula(UnString As String) As Boolean </li></ul><ul><li>CheckCedula = False </li></ul><ul><li>Dim TmpR As Range </li></ul><ul><li>For Each TmpR In Range("Cedulas") </li></ul><ul><li>If InStr(Trim(Replace(UnString, " ", "")), TmpR.Value) = 1 Then </li></ul><ul><li>CheckCedula = True </li></ul><ul><li>Exit For </li></ul><ul><li>End If </li></ul><ul><li>Next </li></ul><ul><li>End Function </li></ul>
11.
Modelo COM <ul><li>Component Object Model de Microsoft </li></ul><ul><li>Acceso a aplicaciones como objetos </li></ul><ul><ul><li>O cualquier “componente” </li></ul></ul><ul><li>Acceso desde otros lenguajes </li></ul><ul><ul><li>Por ejemplo VBScript </li></ul></ul>
12.
Ejemplo COM desde VBScript <ul><li>'Variables a utilizar y posiciones iniciales de proceso </li></ul><ul><li>Document.Write "<P>Creando el objeto Excel.</P>" </li></ul><ul><li>Dim XLApp </li></ul><ul><li>Set XLApp = CreateObject("Excel.Application") </li></ul><ul><li>Document.Write "<P>Abriendo el archivo.</P>" </li></ul><ul><li>Dim XLBk </li></ul><ul><li>Set XLBk = XLApp.WorkBooks.Open("EjVBA04.XLS") </li></ul><ul><li>Document.Write "<P>Estableciendo rangos de celdas de operación.</P>" </li></ul><ul><li>Dim OriR </li></ul><ul><li>Set OriR = XLBk.WorkSheets("Hoja1").Range("A1") </li></ul><ul><li>Dim DestR </li></ul><ul><li>Set DestR = XLBk.WorkSheets("Hoja2").Range("A1") </li></ul>ej089.html