none
Macro copiar de un libro a otro

    Pregunta

  • Buenas noches, para optimizar mi trabajo, intento crear una macro que copie información de un libro de origen a uno de destino, la macro debe escoger un libro de una ubicación específica (el libro no tiene un nombre específico) abrirlo y copiar un determinado rango, la cantidad de columnas del rango simpre es igual, pero varia el número de filas, la macro funciona hasta abrir un libro del directorio escogido, pero no copia el rango del libro abierto y mucho menos lo copia en el libro de destino. En un modulo del libro de destino he colocado el código siguiente:
    Sub CommandButton1_Click()
    Dim Filename As Workbook


    If MsgBox("Desea Importar Archivo", vbYesNo, "Pregunta") = vbYes Then
    'Con este mensaje si el usuario selecciona si se continua con el proceso, sino no pasa nada

    ChDir "C:\Users\MIGUEL\Desktop\FSF\OT"
    Workbooks.Open Filename:=Application.GetOpenFilename("Archivos de excel,*.xls*", _
    , "Seleccione archivo para actualizar datos.")
    'con este código abro un archivo de una ubicación

    'TODO BIEN HASTA ESTA PARTE DONDE VIENE EL PROBLEMA

    Workbooks("Filename.xls").Worksheets("Hoja1").Activar
    Range("B3").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    'Seleeciona un rango en el archivo elelgido para copiarlo en un libro de destino

    Windows("FSF.xls").Activate
    Range("B3").Select
    ActiveSheet.Paste
    'copia rango seleccionado en hoja de destino.
     
    Else
    'Seleccionó NO, no haga nada
    End If
    End Sub

    martes, 09 de febrero de 2010 1:20

Respuestas

  • Lo que sucede es que tu variable filename en realidad uan esta mal ubicada, deberia de ser algo asi:

    Filename = Application.GetOpenFilename("Archivos de excel,*.xls*", _
    , "Seleccione archivo para actualizar datos.")

    Y dos que tu variable Filename te coge la ruta de donde abristes el achivo, por eso que despeus tu pones:


    Workbooks("Filename.xls").Worksheets("Hoja1").Activar


    entonces si es la ruta al poner filename.xls no esta del bien...

    Lo que se puede hacer es extraer de la ruta Filename lo ultimo el nombre del archivo solo el nombre.

    Saludos,



    Trainer MS Office 2007
    martes, 09 de febrero de 2010 18:16

Todas las respuestas

  • Lo que sucede es que tu variable filename en realidad uan esta mal ubicada, deberia de ser algo asi:

    Filename = Application.GetOpenFilename("Archivos de excel,*.xls*", _
    , "Seleccione archivo para actualizar datos.")

    Y dos que tu variable Filename te coge la ruta de donde abristes el achivo, por eso que despeus tu pones:


    Workbooks("Filename.xls").Worksheets("Hoja1").Activar


    entonces si es la ruta al poner filename.xls no esta del bien...

    Lo que se puede hacer es extraer de la ruta Filename lo ultimo el nombre del archivo solo el nombre.

    Saludos,



    Trainer MS Office 2007
    martes, 09 de febrero de 2010 18:16
  • Omar muchas gracias por la respuesta es útil la información para persona que como yo no tenemos muchos conocimientos pero estamos ávidos de aprender. Siguiendo con este tema, por favor podrías indicarme como proceder? la macro abre en el directorio cualquier archivo que desee pero sin embargo no completa correctamente el proceso, lo que deseo es seleccionar del libro de origen el rango B3: I3 y desde allí hasta la última fila con datos, copiar esta selleción y pegarlo en el libro de destino en la celda B3, como indique en la consulta anterior el libro de origen puede tener cualquier nombre.
    Sub CommandButton1_Click()
    Dim Filename As String

    If MsgBox("Desea Importar Archivo", vbYesNo, "Pregunta") = vbYes Then
    'Haga algo aquí
    ChDir "C:\Users\MIGUEL\Desktop\FSF\OT"
       Filename = Application.GetOpenFilename("Archivos de excel,*.xls*", _
    , "Seleccione archivo para actualizar datos.") 'Application.GetOpenFilename para abrir ubicación
           'de archivos de excel      Worksheets("Hoja1").Activar
        Range("B3:I3").End(xlDown).Select
        Selection.Copy

    Windows("FSF.xls").Activate
    Range("B3").Select
    ActiveSheet.Paste

     
    Else
    'Seleccionó NO, no haga nada
    End If
    End Sub

    jueves, 11 de febrero de 2010 4:35