H o l a: Te anexo la macro. Funciona de igual forma, seleccionas la celda donde quieres pegar los datos.
Las propiedades del archivo (nombre, hoja, rango, creado y modificado), quedarán en la fila de arriba de tu celda seleccionada.
Después de abrir el archivo, te va a aparecer una pregunta para saber si el libro es el correcto, si es correcto, presiona Sí.
Si no es correcto y quieres otro, presiona No.
Si ya no quieres continuar, presiona Cancelar.
Sub CopiaRangoOtroLibro()
'Por.Dante Amor
Set l1 = ThisWorkbook
Set h1 = l1.ActiveSheet
Set c1 = ActiveCell
Set fso = CreateObject("Scripting.FileSystemObject")
'
If c1.Row = 1 Then
MsgBox "Debes seleccionar una celda de la fila 2 en adelante"
Exit Sub
End If
'
Do While True
Set c1 = ActiveCell
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Seleccione archivo de excel"
.Filters.Clear
.Filters.Add "Archivos excel", "*.xls*"
.AllowMultiSelect = False
.InitialFileName = l1.Path & "\"
If Not .Show Then Exit Sub
archivo = .SelectedItems.Item(1)
End With
'
Workbooks.Open archivo
Set l2 = ActiveWorkbook
res = MsgBox("Es correcto el libro", vbQuestion + vbYesNoCancel, "COPIAR RANGO DE CELDAS")
Select Case res
Case vbYes
variable = l2.Name
With Application
On Error Resume Next
Set libro2 = .InputBox("SELECCIONA LA HOJA Y EL RANGO DE CELDAS A COPIAR ", "LIBRO2", _
Default:="[" & variable & "]Hoja1!$A$1", Type:=8)
If libro2 Is Nothing Then Exit Sub
On Error GoTo 0
End With
celda_2 = libro2.Address
hoja_2 = libro2.Worksheet.Name
libro_2 = libro2.Worksheet.Parent.Name
Set h2 = l2.Sheets(hoja_2)
h2.Range(celda_2).Copy
h1.Range(c1.Address).PasteSpecial xlValues
h1.Range(c1.Address).PasteSpecial xlFormats
'
Set prop = fso.Getfile(archivo)
c1.Offset(-1, 0) = "Datos importados de : " & libro_2
c1.Offset(-1, 1) = "Hoja : " & hoja_2
c1.Offset(-1, 2) = "Rango : " & celda_2
c1.Offset(-1, 3) = "Creado : " & prop.DateCreated
c1.Offset(-1, 4) = "Modificado : " & prop.DateLastModified
'
l2.Close False
MsgBox "Rango copiado", vbInformation, "COPIAR RANGO DE CELDAS"
Exit Do
Case vbNo
'se repite el ciclo para seleccionar otro libro
l2.Close False
Case vbCancel
'se cancela el proceso
l2.Close False
MsgBox "Proceso cancelado", vbExclamation, "COPIAR RANGO DE CELDAS"
Exit Do
End Select
Loop
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias