martes, 29 de septiembre de 2015

ABRIR UN LIBRO DE EXCEL CON EL USO DE MACROS

El protagonista en la macro de hoy es el objeto WORKBOOK,  este objeto hace parte de la colección workbooks y nos permitirá acceder a nuestros libros de Excel.

Para hacer referencia al libro de Excel en que estamos ejecutando el código VBA usamos la propiedad THISWORKBOOK como se mostrara más adelante en la macro.

Para ejemplificar el uso del objeto WORKBOOK , cree una macro que permite abrir un libro de Excel que cree  previamente. Ejemplos como este los puedes encontrar en nuestro curso online de excel.




El libro datos será el que abriremos con el uso de la macro. Adicionalmente la macro copia los datos del libro que abre y los pega en el libro que contiene la misma, en este caso copiara los datos que se encuentran en DATOS  a Macro10.

Este es el código de la macro


Como se puede ver en el código usamos la instrucción THISWORKBOOK.PATH esta instrucción retorna la ubicación actual del libro que contiene la macro por este motivo Para que esta macro funcione el libro que queremos abrir debe estar en la misma carpeta que el libro que contiene la macro.

Para copiar los datos desde el libro que estamos abriendo lo hacemos fila por fila, previamente sabemos hasta que fila debemos copiar porque lo calculamos con la instrucción
FILA = WS_DATOS.RANGE(“A1”).ROWS.END(XLDOWN).ROW, esta instrucción nos retornara la última fila con datos después en la columna A1 de la primera hoja del libro que estamos abriendo, para el ejemplo el libro datos.

Espero que esta macro te sea de utilidad, por favor deja tus comentarios. Si quieres aprender más sobre temas como este visita nuestro curso online de excel.

1 comentario:

  1. Buenas tardes, compañeros

    Quisiera que me ayudaran a optimizar esta macro, la hace lo siguiente copia los datos de las hojas que representas el dia del mes actual y los pega en otra libro, pero quisiera que sea mas corto no tan tedioso.

    Les adjunto la rutina que he elaborado:

    Sub MetodoAbrirLibro()
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False

    Ayer = DateSerial(Year(Now), Month(Now), Day(Now)) - 1

    Workbooks.Open "\\10.7.10.1\logistica\Logistica Publico\Bodega\inventarios_bodega\Cierre de Inventarios " & Format(Now, "yyyy") & "\cierre inventarios " & Format(Ayer, "mmmm") & ".xls"

    Windows("cierre inventarios " & Format(Ayer, "mmmm") & ".xls").Activate
    Sheets("1").Select
    Application.Union(Range("D18:E18"), Range("J18")).Select
    Selection.Copy

    Windows("Indicadores.xlsm").Activate
    Sheets("Hoja1").Select
    Range("B3").Select
    Selection.PasteSpecial Paste:=xlPasteValues

    Windows("cierre inventarios " & Format(Ayer, "mmmm") & ".xls").Activate
    Sheets("2").Select
    Application.Union(Range("D18:E18"), Range("J18")).Select
    Selection.Copy

    Windows("Indicadores.xlsm").Activate
    Sheets("Hoja1").Select
    Range("B4").Select
    Selection.PasteSpecial Paste:=xlPasteValues

    Asi sucesivamente hasta culminar la hoja que representa el ultimo dia del mes actual

    Windows("cierre inventarios " & Format(Ayer, "mmmm") & ".xls").Activate
    ActiveWindow.Close

    ResponderEliminar