Principales respuestas
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 nadaChDir "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 destinoWindows("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
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- Marcado como respuesta Ismael Borche miércoles, 6 de abril de 2011 15:08
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- Marcado como respuesta Ismael Borche miércoles, 6 de abril de 2011 15:08
-
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 StringIf 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.CopyWindows("FSF.xls").Activate
Range("B3").Select
ActiveSheet.Paste
Else
'Seleccionó NO, no haga nada
End If
End Sub