Macro para copiar y pegar celdas de otro archivo

Hola experto, fíjate que tengo una duda, estoy creando una macro para poder copiar y pegar ciertos registros de un archivo, el punto es, que tengo que cargar diferentes archivos diario y estoy teniendo complicaciones para definir eso, ya que la macro me graba el nombre del archivo, y yo día con día cargare diferentes archivos, que tienen el contenido similar, pero el nombre del archivo también es diferente.
Te explico, tengo un libro en excel, en el cual quiero pegar la información seleccionada del archivo. Pero quiero una macro que me permita seleccionar el archivo y ya una vez seleccionado el archivo copie ciertas columnas y registros y los pegue en mi libro actual.
Yo tengo la idea en cuestión de con un opendialog pues abrir el archivo, hasta ahí siento que voy bien, el punto es que pueda copiar registros de ese archivo que se abrió.
Mira te dejo un código y te explico donde esta mi problema:
'dlgAnswer = Application.Dialogs(xlDialogOpen).Show
Dim lngCount As Long
     'Open the file dialog
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = True
        .Show
        ' Display paths of each file selected
        For lngCount = 1 To .SelectedItems.Count
            Workbooks.Open Filename:=.SelectedItems(lngCount)
            'MsgBox .SelectedItems(lngCount)
       ' Next lngCount
   ' End With
    Windows("prueba nadin.xls").Activate
    'Workbooks.Open Filename:= _  ''''''''''' AQUI TENGO EL PROBLEMA
        "U:DC AUTOMOTRIZ\Cash DFSM\CASHDC082009.xls"
    ActiveWindow.SmallScroll Down:=-36
    Range("B20:F27").Select
    Selection.Copy
    Windows("prueba nadin.xls").Activate
    Range("B7").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
El punto es que no se como definir o hacer que cambie esa ruta del archivo para que copie los datos respecto al nombre de hoja del archivo de abrí. Como podrás ver, puse el open dialog, pero no se como hacer que funcione el copiar y pegar con diferentes nombres de archivos.
Espero haberme dado a entender, sintetizo, es una macro que me permita abrir un archivo, una vez abierto ese archivo, que copie ciertos registros (ahí no tengo problema con el código) y los pegue en un libro nuevo. El archivo cada día es diferente y es ahí donde no he podido hacer que funcione el código en base a proceso.
Un saludo
Gracias
Toño

1 respuesta

1
Respuesta de
Hola, vamos a ver pienso que es sencillo tu tienes abierto el Libro Prueba Nadin.xls y en este libro pones un botón en la hoja y le pones el código para que te muestre el dialogo de abrir otro libro, lo buscas lo marcas y lo abres, ahora el nombre del libro lo pasas a una variable para activar uno u otro en la macro para copiar el rango que quieras del que abres y lo lleves a tu libro Prueba Nadin.xls, te explico por pasos:
1º Abres tu Libro Prueba Nadin y dibujas un botón en la hoja y le añades este código:
Private Sub CommandButton1_Click()
Application.Dialogs(xlDialogOpen).Show
nombre = ActiveWorkbook.Name
Range("B20:F27").Select
    Selection.Copy
    Windows("prueba nadin.xls").Activate
    Range("B7").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
End Sub
De esta forma siempre eliges tu el libro que se abre te copia el rango que decides lo pega en tu libro Prueba Nadin.xls solo te faltaría cerrar el libro abierto y guardar los datos en el Libro Prueba.
Mira a ver si te sirve, si es así comenta, puntúa y finaliza la consulta. Gracias.
>Un saludo
>Julio
PD: Si necesitas alguna aclaración me lo dices.
Gracias expertO, funciona muy bien este código, solo tengo una duda, fíjate que del archivo que abro para copiar y pegar los datos, aparte de copiar los datos de "B20:F27", también necesito copiar y pegar los datos de los siguientes registros: de "B35:G37", de "B43:G44" y de "G48:G51" como puedo hacer esa referencia para que los copie y los pegue después en la misma hoja de "prueba nadin".
De antemano muchas gracias
Toño
Hola, pues minimizando un libro y el otro según lo necesites:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Application.Dialogs(xlDialogOpen).Show
nombre = ActiveWorkbook.Name
ActiveSheet.Range("B20:F27").Select
    Selection.Copy
Windows(nombre).WindowState = xlMinimized
ActiveSheet.Range("B7").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
Windows(nombre).WindowState = xlMaximized
ActiveSheet.Range("B35:G37").Select
    Selection.Copy
Windows(nombre).WindowState = xlMinimized
ActiveSheet.Range("A7").Select 'Tienes que ir cambiando el lugar de pegado
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
Windows(nombre).WindowState = xlMaximized
ActiveSheet.Range("B43:G44").Select
    Selection.Copy
Windows(nombre).WindowState = xlMinimized
ActiveSheet.Range("A7").Select 'Tienes que ir cambiando el lugar de pegado
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
Windows(nombre).WindowState = xlMaximized
ActiveSheet.Range("G48:G51").Select
    Selection.Copy
Windows(nombre).WindowState = xlMinimized
ActiveSheet.Range("A7").Select 'Tienes que ir cambiando el lugar de pegado
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
End Sub
Cambia la celda donde te pega los datos y ya lo tienes.
Comenta, puntúa y finaliza la consulta. Gracias.
>Un saludo
>Julio
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Microsoft Excel o hacer tu propia pregunta: