Te anexo la macro, que realiza lo siguiente:
- Ejecutas la macro
- Te solicita abrir el libro externo, iniciando en la carpeta del escritorio
- Selecciona un libro
- La macro abre el libro seleccionado
- Selecciona la hoja del libro externo
- Debes seleccionar el rango a copiar
- Ahora, en el libro activo, debes seleccionar una hoja
- Seleccionar la celda en donde quieres la importación
- Presiona aceptar para importar
Sub Importar_Datos_Otro_Libro()
'Por.Dante Amor
Set l1 = ThisWorkbook
'Referencia: http://www.ozgrid.com/forum/showthread.php?t=24985
On Error Resume Next
Set ObjShell = CreateObject("WScript.Shell")
escritorio = ObjShell.SpecialFolders("Desktop")
Set ObjShell = Nothing
On Error GoTo 0
'
If escritorio <> "" Then ruta = escritorio Else ruta = l1.Path
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Seleccione archivo externo de excel"
.Filters.Clear
.Filters.Add "All Files", "*.*"
.Filters.Add "xls.*", "*.xls*"
.FilterIndex = 2
.AllowMultiSelect = False
.InitialFileName = ruta & "\"
If .Show Then
Set l2 = Workbooks.Open(.SelectedItems.Item(1))
On Error Resume Next
variable = l2.Name
hoja = l2.Sheets(1).Name
With Application
Set libro2 = .InputBox("SELECCIONE LAS CELDAS A IMPORTAR ", "LIBRO EXTERNO", _
Default:="[" & variable & "]" & hoja & "!$A$1", Type:=8)
If libro2 Is Nothing Then Exit Sub
End With
celda_2 = libro2.Address
hoja_2 = libro2.Worksheet.Name
libro_2 = libro2.Worksheet.Parent.Name
'
l1.Activate
With Application
Set libro1 = .InputBox("SELECCIONE CELDA DONDE QUIERE PEGAR ", "LIBRO1", _
Default:=Selection.Address, Type:=8)
If libro1 Is Nothing Then Exit Sub
End With
celda_1 = libro1.Address
hoja_1 = libro1.Worksheet.Name
libro_1 = libro1.Worksheet.Parent.Name
On Error GoTo 0
'
'copiar
l2.Sheets(hoja_2).Range(celda_2).Copy
l1.Sheets(hoja_1).Range(celda_1).PasteSpecial xlPasteValuesAndNumberFormats
'
l2.Close False
MsgBox "Datos importados"
End If
End With
End Sub
.
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
.
Avísame cualquier duda
.