Copiar e insertar hoja nueva y pegar solo valores

Para Dante Amor, mi sensei de Macros VBA

Nuevamente te quiero pedir tu ayuda, tengo una macro que se ejecuta desde un archivo externo, el cual busca un archivo origen y crea una copia del mismo sobre el cual quiero ejecutar unos procedimientos, al cual le llamo destino.

Al archivo destino quiero insertarle dos hojas, la primera la quiero llamar "dat1" y la segunda "dat2" y en estas quiero copiar solo los valores de la hoja 1.

El objetivo final es estandarizar los datos del archivo origen para luego consolidar los datos ya que son reportes de pago mes a mes.

El código que llevo es el siguiente:

Sub MaAlfa()
    alfa = ActiveWorkbook.Name
    origen = Application.GetOpenFilename("Directorio Terceros (*.xls*), *.xls*", , "Abra el directorio de terceros", , False)
       Application.DisplayAlerts = False
       Workbooks.Open Filename:=origen
    origen = ActiveWorkbook.Name
    destino = Application.GetSaveAsFilename(filefilter:="Archivo de Microsoft Excel (*.xlsx),*xlsx")
    Set NuevoArchivo = ActiveWorkbook
    NuevoArchivo.SaveAs Filename:=destino, FileFormat:=xlOpenXMLWorkbook, Password:="", _
    WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
    destino = ActiveWorkbook.Name
    'hasta acá me funciona bien, de acá en adelante es mi pregunta
    Worksheets(1).Copy after:=Worksheets(2)
    ActiveSheet.Name = "DAT1"
    'Worksheets(1).Copy Add:=Worksheets(2).Select
    Worksheets.Add(after, Count) = 1
End Sub

Al correo te envío los archivos para mejor comprensión, ya que se relaciona con una pregunta no resuelta en otra ocasión.

1 Respuesta

Respuesta
1

Veamos, quieres insertar 2 hojas nuevas en el archivo 3, y luego dices:

Y en estas quiero copiar solo los valores de la hoja 1.

Si la "Hoja1" está en el archivo origen, entonces quedaría así:

Sub MaAlfa()
    alfa = ActiveWorkbook.Name
    origen = Application.GetOpenFilename("Directorio Terceros (*.xls*), *.xls*", , "Abra el directorio de terceros", , False)
    Application.DisplayAlerts = False
    Workbooks.Open Filename:=origen
    ruta = ActiveWorkbook.Path & "\"
    origen = ActiveWorkbook.Name
    destino = Application.GetSaveAsFilename(filefilter:="Archivo de Microsoft Excel (*.xlsx),*xlsx")
    Set nuevoarchivo = ActiveWorkbook
    nuevoarchivo.SaveAs Filename:=destino, FileFormat:=xlOpenXMLWorkbook, Password:="", _
        WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
    destino = ActiveWorkbook.Name
    'hasta acá me funciona bien, de acá en adelante es mi pregunta
    'crea 2 hojas en el archivo nuevo
    Sheets.Add after:=nuevoarchivo.Sheets(nuevoarchivo.Sheets.Count)
    ActiveSheet.Name = "DAT1"
    Sheets.Add after:=nuevoarchivo.Sheets(nuevoarchivo.Sheets.Count)
    ActiveSheet.Name = "DAT2"
    '
    'copiar solo datos de la "Hoja1" del archivo origen al archivo nuevo
    '
    Set archivoorigen = Workbooks.Open(Filename:=ruta & origen)
    Set h1 = archivoorigen.Sheets("Hoja1")
    h1.Cells.Copy
    Nuevoarchivo. Sheets("DAT1"). Range("A1"). PasteSpecial xlValues
 nuevoarchivo. Sheets("DAT2"). Range("A1"). PasteSpecial xlValues
 nuevoarchivo. Save
 archivoorigen.Close False
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas