En macro Excel Copiar el rango en ves de la hoja

Nuevamente DAM, perdona pero no me sale lo que a continuación veras

Entre los Apóstrofos metí esto para que solo copie el rango.

Sub guardar() 'PARA GUARDAR COMO XLSX
'Por.Dante Amor 
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set h1 = ActiveSheet
    nbr = h1.[E8] & " " & h1.Name & " " & h1.[I8] & " " & h1.[I9]
    ruta = "D:\Datos Mecanicos\"
    With Application.FileDialog(msoFileDialogFolderPicker)
        '.Title = "Selecciona una carpeta"
        .AllowMultiSelect = False
        .InitialFileName = ruta
        If .Show <> -1 Then Exit Sub
        cp = .SelectedItems(1)
    End With
''''
    h1.Range("A1:J51").Select
    'h1.Copy
    Selection.Copy
''''
    ActiveSheet.DrawingObjects("uno").Delete
    ActiveSheet.DrawingObjects("dos").Delete
    'ActiveSheet.DrawingObjects ("Botón 1") 'Delete 'eliminaq boton en hoja
    ActiveSheet.Protect Password:="By Jot@" 'Protege la copia contra edicion
    ActiveWorkbook.SaveAs Filename:=cp & "\" & nbr & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    ActiveWorkbook.Close
    MsgBox "Archivo guardado en " & cp & "\" & nbr & ".xlsx"
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Range("A1").Select
End Sub

Experimente esto porque metí algo de información personal al lado del rango puesto (a partir de la columna L) y, aunque no me aparece en la vista previa, me lo copia a la copia. Esto no quiero que salga en la copia

1 Respuesta

Respuesta
1

No entiendo qué es lo que necesitas.

Copia la hoja y después borra el rango que no quieres en la copia:

H1. Copy 'esto copia toda la hoja en un nuevo libro

'después borras el rango que no quieres en la copia

ActiveSheet. Range("L2:L10"). Clear

sal u dos

Esta macro esta para que copie la hoja

Sub guardar() 'PARA GUARDAR COMO XLSX
'Por.Dante Amor 
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set h1 = ActiveSheet
    nbr = h1.[E8] & " " & h1.Name & " " & h1.[I8] & " " & h1.[I9]
    ruta = "D:\Datos Mecanicos\"
    With Application.FileDialog(msoFileDialogFolderPicker)
        '.Title = "Selecciona una carpeta"
        .AllowMultiSelect = False
        .InitialFileName = ruta
        If .Show <> -1 Then Exit Sub
        cp = .SelectedItems(1)
    End With
    h1.Copy
    ActiveSheet.DrawingObjects("uno").Delete
    ActiveSheet.DrawingObjects("dos").Delete
    'ActiveSheet.DrawingObjects ("Botón 1") 'Delete 'eliminaq boton en hoja
    ActiveSheet.Protect Password:="By Jot@" 'Protege la copia contra edicion
    ActiveWorkbook.SaveAs Filename:=cp & "\" & nbr & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    ActiveWorkbook.Close
    MsgBox "Archivo guardado en " & cp & "\" & nbr & ".xlsx"
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Range("A1").Select
End Sub

y lo hace mui bien.

Quiero editar esta misma macro para que copie solo el rango, A1:J51 como xlsx.

A ver si me hice entender

Te entrego la macro con lo que solicitaste:

"Quiero editar esta misma macro para que copie solo el rango, A1:J51 como xlsx"

Sub guardar() 'PARA GUARDAR COMO XLSX
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set h1 = ActiveSheet
    nbr = h1.[E8] & " " & h1.Name & " " & h1.[I8] & " " & h1.[I9]
    ruta = "D:\Datos Mecanicos\"
    With Application.FileDialog(msoFileDialogFolderPicker)
        '.Title = "Selecciona una carpeta"
        .AllowMultiSelect = False
        .InitialFileName = ruta
        If .Show <> -1 Then Exit Sub
        cp = .SelectedItems(1)
    End With
    'h1.Copy
    Set l2 = Workbooks.Add
    Set h2 = l2.Sheets(1)
    h1.Range("A1:J51").Copy h2.[A1]
    '
    On Error Resume Next
    ActiveSheet.DrawingObjects("uno").Delete
    ActiveSheet.DrawingObjects("dos").Delete
    On Error GoTo 0
    'ActiveSheet.DrawingObjects ("Botón 1") 'Delete 'eliminaq boton en hoja
    ActiveSheet.Protect Password:="By Jot@" 'Protege la copia contra edicion
    ActiveWorkbook.SaveAs Filename:=cp & "\" & nbr & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    ActiveWorkbook.Close
    MsgBox "Archivo guardado en " & cp & "\" & nbr & ".xlsx"
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Range("A1").Select
End Sub

sal u dos

Hola DAM

Funciona por lo que solicite pero, visualiza la 1ª imagen es la macro de antes

La macro de antes, copia con el ancho de columnas igual que el origen

La siguiente es la que acabas de dejarme

Fíjate en el ancho de columnas, no mantiene el ancho del origen.

Solamente te entrego lo que pides, ten cuidado con lo que pides, se te puede cumplir.

Si, cierto.

Solo hago referencia de que el anterior código copia con el ancho de columnas de origen y esta no

No es lo mismo copiar una hoja que un rango, si copias el rango tienes que copiar formato, columnas, filas, imágenes, etc.

Por eso no te compliques, copia la hoja y borra lo que no necesites.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas