Luego de abrir un libro ¿Cómo copiarlo a una hoja de un libro diferente, independiente de su nombre?

Hola...Tengo una macro que me permite abrir un archivo (libro Excel)el cual es llamado ("Libro1") y al momento de abrirlo su "Hoja1" se copia inmediatamente a mi Libro principal(desde donde ejecuto la macro de abrir archivo).

El Problema es: Que al abrir un archivo este siempre debe llamarse "Libro1" porque sino no se podrá copiar su "Hoja1" hacia mi Libro principal. La idea es que al abrir un archivo cualquiera( independiente de como se llame) la Hoja1 se copie igual.

1 respuesta

Respuesta
1

Puedes pegar tu macro para ajustarla

Saludos. Dante Amor

Sub Copiar()
Windows("Libro1.xlsx").Activate
Sheets("Hoja1").Select
Range("A1:AZ3000").Select
Selection.Copy
Windows("Backlog14Feb12.xlsm").Activate
Sheets("Backlog").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
Esta solo es la parte de copiar del que hablé,acá claramente va a copiar la "Hoja1" del "Libro1". Me gustaría que pueda copiar la hoja cualquier NOMBRE del Libro (llámese Libro1,Libro2, etc.)

Supongo yo que el error está en esta fila : Windows("Libro1.xlsx").Activate
Ya que siempre me copiara el archivo que se llame Libro1. En cambio me gustaría que me copiara la hoja de cualquier archivo Excel
PD: los Datos de estos archivos (según lo que estoy haciendo) tienen la misma pauta, pero sus nombres dependerán, no siempre se llamaran "Libro1".
Gracias, espero pueda ayudarme.

Para saber cómo se llama el libro de excel, primero lo debes abrir con la macro, de esta forma tenemos identificado como se llama el libro y así podemos copiar la hoja1. Imagino que si tienes abiertos 5 libros, cómo sabrá la macro cuál de todos ellos debe seleccionar para copiar la hoja1, es por eso que, no abras el libro manualmente, debes abrir el libro con la macro.

Te anexo la macro completa, para que puedas abrir un libro con el explorador, se copie la hoja1 y la pegue en la hoja Backlog.

Sub copiarhoja1()
'Por.DAM
Set l1 = Workbooks("Backlog14Feb12")
With Application.FileDialog(msoFileDialogFilePicker)
    .Title = "Seleccione archivo de excel"
    .Filters.Add "Archivos excel", "*.xls*"
    .AllowMultiSelect = False
    .InitialFileName = ThisWorkbook.Path
    If .Show Then
        Set l2 = Workbooks.Open(.SelectedItems.Item(1))
        l2.Sheets("Hoja1").Range("A1:AZ3000").Copy l1.Sheets("Backlog").Range("A1")
    End If
End With
End Sub

Saludos.Dante Amor
Si es lo que necesitas.

Sub abrirArchivo()
Dim msj As String
msj = MsgBox("Elija el archivo a abrir")
strArchivo = Application.GetOpenFilename
If strArchivo = False Then Exit Sub
Workbooks.OpenText Filename:=strArchivo
End Sub
_______________________________________________________________
Sub Copiar()
Windows("Libro1.xlsx").Activate
Sheets("Libro1").Select
Range("A1:AZ3000").Select
Selection.Copy
Windows("Backlog14Feb12.xlsm").Activate
Sheets("Backlog").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
___________________________________________________________________
Sub CorrecciónPlanilla()
'
' CorrecciónPlanilla Macro
'
'
Range("A1:A6").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Delete Shift:=xlUp
Range("A1").Select
ActiveCell.FormulaR1C1 = ""
Range("A1:B1").Select
Range(Selection, Selection.End(xlToLeft)).Select
....BLABLABLA (no copié todo porque era muy largo). La idea es que corrige la planilla que es importada desde el Libro que abrí, es decir, la planilla se copia a mi libro original(donde corro estas 3 macros a través de un botón) para luego corregirla en una Hoja de este libro Original.
La cosa es que yo puedo abrir (1er Macro) cualquier archivo, pero SOLO me va a copiar(importar) los documentos que tengan por nombre "Libro1".
Ojalá quede algo mas claro y gracias por ayudar.

Según veo, quita tus macros abrirArchivo y Copiar, y pon esta macro.

Sub copiarhoja1()
'Por.DAM
Set l1 = Workbooks("Backlog14Feb12")
With Application.FileDialog(msoFileDialogFilePicker)
    .Title = "Seleccione archivo de excel"
    .Filters.Add "Archivos excel", "*.xls*"
    .AllowMultiSelect = False
    .InitialFileName = ThisWorkbook.Path
    If .Show Then
        Set l2 = Workbooks.Open(.SelectedItems.Item(1))
        l2.Sheets("Hoja1").Range("A1:AZ3000").Copy l1.Sheets("Backlog").Range("A1")
    End If
End With
l1.Activate
Sheets("Backlog").Select
End Sub

Supongo que tienes algo así:

sub proceso()

abrirArchivo

Copiar

CorrecciónPlanilla

end sub

Ahora debe quedar así:

sub proceso()
Copiarhoja1
CorrecciónPlanilla
end sub

Saludos. Dante Amor
No olvides finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas