¿Como puedo abrir un archivo de excel a través de un botón y correr macro de copiado/pegado?

Quiero saber como puedo abrir un archivo de excel "x" (que cambia el nombre constante mente, ejemplo "archivo_X 21-04-2013", "Archivo_x 22-04-2013".. Etc.. Esto debido que lleva la fecha en la que se elaboro) a través de un cuadro de dialogo y que al abrir el archivo se ejecute otra macro que copie los datos contenidos en la columna H (desde la "H9" hasta la celda "H1509") lo mismo con las columnas AA, AB y AD (AA9, AB9 y AD9 hasta "AA1509", "AB1509" Y "AD1509") a una pestaña (ARCHIVO_X_COPARACION) en el libro de excel desde donde se ejecuta la macro, puesto que en este tengo ya las formulas para comparar los datos entre se si.
Y después a los resultado que tengo poder ejecutar otra macro que me permita copiar y pegar los datos de una pestaña en un nuevo libro,.. Digamos como generar un reporte los datos obtenidos de la comparación.
La idea seria

1. Botón> cuadro_de_dialogo_abrir(para seleccionar el archivo excel y abrirlo)> ejecutar_macro_de_copiado/pegado (a otra pestaña en el libro donde se alberga la macro y se tiene formulas)

2. Botón>copiar datos de una pestaña y/o la pestaña completa> abrir libro nuevo de excel>pegar datos copiados.

3. Como se hace un botón para cerrar un archivo sin que se guarden cambios.

Les agradecería mucho la ayuda para hacer el codigo, puesto que he andado medio enredad con esto de la macro y ya medio un bloqueo mental... Disculpen las molestias.

1 respuesta

Respuesta
1

Con gusto te ayudo, pero tendríamos que ir paso a paso,

Primero una macro que te abra el archivo y te copie las columnas a una hoja.

Cuando terminemos de probar esta parte y funcione, seguimos con el siguiente paso. ¿Te parece?

Sigue las Instrucciones para un botón y ejecutar la macro
1. Abre tu libro de Excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Ahora para crear un botón, puedes hacer lo siguiente:
6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona Asignar macro / Selecciona: abrearchivo
9. Aceptar.
10. Para ejecutarla dale click a la imagen.

Sub abrearchivo()
'Por.Dam
Set h1 = ThisWorkbook.ActiveSheet
h1.Activate
Set h2 = ThisWorkbook.Sheets("ARCHIVO_X_COMPARACION")
ufila = ActiveCell.SpecialCells(xlLastCell).Row
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Seleccione archivo de excel"
        .Filters.Clear
        .Filters.Add "All Files", "*.*"
        .Filters.Add "xls.*", "*.xls*"
        .FilterIndex = 2
        .AllowMultiSelect = False
        .InitialFileName = ThisWorkbook.Path
        '.Show
        If .Show Then
            Workbooks.Open .SelectedItems.Item(1)
            uf = 1509 'ActiveCell.SpecialCells(xlLastCell).Row
            f = 9
            cols = Array(H, AA, AB, AD)
            For i = LBound(cols) To UBound(cols)
                c1 = cols(i) & f & ":" & cols(i) & uf
                Range(c1).Copy h2.Range("A" & ufila + 1)
            Next
            Application.DisplayAlerts = False
            ActiveWorkbook.Close
            Application.DisplayAlerts = True
        End If
    End With
End Sub

Supongo que la columna H se copia en la columna H de la hoja destino y AA en AA, etc.

En el archivo de la macro, tienes que tener una hoja con este nombre: ARCHIVO_X_COMPARACION

Prueba y me comentas.

Saludos. Dam
Si es lo que necesitas.

Hola, muy buen día, gracias por la gran ayuda (_^^)/

me funciona bien al momento de asignarla a un botón, y destinar la pestaña en donde se deben de pegar los datos, puesto que me permite seleccionar el archivo sin problema y también se ejecuta bien el copiar/pegar, salvo que selecciona celdas de mas, aparte de las H, AA, AB y AD y las pega en la pestaña de destino borrándome las formulas de comparación, nuevamente tendré que molestarte, solicitando me indique como puedo unicamente decirle que copie las celdas (H9:1509, AA9:AA1509, AB9:AB1509 Y AD9:AD1509) y las pegue en las celdas de destino (H9:1509, AA9:AA1509, AB9:AB1509 Y AD9:AD1509) de la pestaña.

de antemano gracias, es usted muy inteligente (u_u)'-'

Saludos

Range("H9:H1509, AA9:AA1509, AA9:AB1509, AD9:AD1509").Copy h2.Range("H9:H1509, AA9:AA1509, AA9:AB1509, AD9:AD1509" & ufila + 1)

intente esto pero me indica:

(se ha producido error '1004' en tiempo de ejecución:

no se puede ejecutar comando en selecciones múltiples)

escribe tu código aquí

Cambia la macro por esta

Sub abrearchivo()
'Por.Dam
Set h1 = ThisWorkbook.ActiveSheet
h1.Activate
Set h2 = ThisWorkbook.Sheets("ARCHIVO_X_COMPARACION")
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Seleccione archivo de excel"
        .Filters.Clear
        .Filters.Add "All Files", "*.*"
        .Filters.Add "xls.*", "*.xls*"
        .FilterIndex = 2
        .AllowMultiSelect = False
        .InitialFileName = ThisWorkbook.Path
        '.Show
        If .Show Then
            Workbooks.Open .SelectedItems.Item(1)
            uf = 1509 'ActiveCell.SpecialCells(xlLastCell).Row
            f = 9
            cols = Array("H", "AA", "AB", "AD")
            For i = LBound(cols) To UBound(cols)
                c1 = cols(i) & f & ":" & cols(i) & uf
                Range(c1).Copy h2.Range(cols(i) & f)
            Next
            Application.DisplayAlerts = False
            ActiveWorkbook.Close
            Application.DisplayAlerts = True
        End If
    End With
End Sub

Prueba y me comentas.
Saludos. Dam
Si es lo que necesitas.

me funciona mejor, gracias,..

pues yo había también intentado esto:

 Range("H9:AD1509").Copy h2.Range("H9:AD1509" & ufila + 1)

pero me seguía copiando celdas de más

finalizo esta pregunta y te vuelvo a hacer otra para lo de:...

2. Botón>copiar datos de una pestaña y/o la pestaña completa> abrir libro nuevo de excel>pegar datos copiados.
3. como se hace un botón para cerrar un archivo sin que se guarden cambios.

GRACIAS

.

GRACIAS. ES USTED MUY AMABLE E INTELIGENTE,.. ME GUSTARÍA ME SUGIRIERA ALGÚN LIBRO PARA IR ESTUDIANDO ACERCA DE ESTO, PUES DE CADA DUDA QUE SOLUCIÓN Y DE LA CUAL APRENDO ME TRAE NUEVAS,.. I MAS INTERÉS POR APRENDER

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas