ERROR EN código que copia hoja de un libro y lo crea como nuevo libro

Tengo el siguiente código:

Sub guardaCopiaPANADERIA()
Application.ScreenUpdating = False
On Error Resume Next
'x Elsamatilde
Sheets("PANADERIA").Select ' ES LA HOJA A COPIAR
'controla si existe hoja COPIA sino la crea
Dim X As Byte
For Each Sh In Sheets
If Sh.Name = "PANADERIA COPIA" Then X = 1 ' ES LA HOJA A CREAR EN CASO DE
Next Sh
'si la variable esta en 0 debe crear la hoja
If X = 0 Then
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "PANADERIA COPIA" ' ES LA HOJA A CREAR EN CASO DE
'vuelvo a mi hoja
Sheets("PANADERIA").Select ' ES LA HOJA A COPIAR
End If
'copio el rango de datos en la misma ubicaciòn de hoja copia

ActiveSheet.Range("B2:AE370").Copy Destination:=Sheets("PANADERIA COPIA").Range("B2") ' ES LA HOJA A CREAR EN CASO DE
'quito formulas de la copia

Sheets("PANADERIA COPIA").Select ' ES LA HOJA A CREAR EN CASO DE
ActiveSheet.Range("B2:AE370").Select
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
Selection.Copy
Selection.PasteSpecial xlValues

'asigno ruta y nombre para la copia. El nombre concatena fecha y nro
ruta = ThisWorkbook.Path & "\COPIAS PANADERIA\" 'NOMBRE DE CARPETA
nbrecopia = Format(Range("$E$2"), "yyyy-mm-dd") & "_" & Range("D2")

'creo libro como copia de esta hoja
ActiveSheet.Copy
Set wb = ActiveWorkbook
With wb
'le agrego las instrucciones de bloqueo y protección
'.Sheets(1).Columns("J:K").Hidden = True 'OPCIONAL: ocultar col
.Sheets(1).Columns("A:W").EntireColumn.AutoFit 'ajusta ancho de col

'vista Pantalla completa
Application.DisplayFullScreen = True
'se oculta la barra de fórmulas
Application.DisplayFormulaBar = False
With ActiveWindow
'se ocultan las pestañas de las hojas
.DisplayWorkbookTabs = True
'se quitan los encabezados y líneas de las celdas
.DisplayHeadings = False
.DisplayGridlines = False
Application.CommandBars("Worksheet Menu Bar").Enabled = False
'QUITAR BARRAS MACROS
'With ActiveWindow
'OCULTAR LAS PESTAÑAS DE LAS HOJAS DEL LIBRO
.DisplayWorkbookTabs = False
Application.DisplayFullScreen = True ' PANTALLA COMPLETA
ActiveWindow.DisplayVerticalScrollBar = False 'OCULTA BARRA DE DESPLAZAMIENTO VERTICAL
ActiveWindow.DisplayHorizontalScrollBar = False 'OCULTA BARRA DE DESPLAZAMIENTO HORIZONTAL

End With
'se bloquean todas las celdas y se protege la hoja
.Sheets(1).Cells.Locked = True

.Sheets(1).Protect password:="1234"
'contemplo posible error en el guardado
On Error GoTo sinCopia

'contemplo posible error en el guardado
On Error GoTo sinCopia
'guardamos el libro en la misma carpeta, subcarpeta COPIAS
.SaveAs ruta & nbrecopia & ".xlsx"
On Error GoTo 0
'cerramos el nuevo libro
.Close
End With
'se libera el objeto
Set wb = Nothing
'limpio la hoja COPIA
ActiveSheet.Unprotect
ActiveSheet.Cells.Clear
ActiveSheet.Range("B2").Select
'vuelvo a la hoja FACTURA para seguir con el proceso
Sheets("PANADERIA").Select ' REGRESO A HOJA QUE QUIERO
Exit Sub

sinCopia:
MsgBox "Fallo el guardado. Guarda la hoja COPIA manualmente y luego borra su contenido.", , "ERROR"
'vuelvo a la hoja FACTURA para seguir con el proceso
Sheets("PANADERIA").Select ' REGRESO A HOJA QUE QUIERO
End Sub

el problema esta aqui

'asigno ruta y nombre para la copia. El nombre concatena fecha y nro
ruta = ThisWorkbook.Path & "\COPIAS PANADERIA\" 'NOMBRE DE CARPETA
nbrecopia = Format(Range("$E$2"), "yyyy-mm-dd") & "_" & Range("D2")

la carpeta ya la tengo creada y funciona pero el detalle esta en:

Format(Range("$E$2"), "yyyy-mm-dd") & "_" & Range("D2")

Efectivamente en E2 tengo fecha y en D2 tengo un dato

Cuando quiero cambiar las celdas en vez de E2 que sea E360 o D2 que sea D360

Este ya no me sale los datos que tenga en E360 o en D360,

Cuando se guarda el nuevo libro se crea con este nombre: "_"

Entonces cuando voy ejecutándolo varias veces este me sale un mensaje de que si deseo reemplazar el libro ya que existe. Porque siempre me sale así:"_" (NO RESPETA LOS RANGOS)

Lo raro es que yo tengo asignado estas celdas para que agarre el nombre del libro

Pero en la hoja que realiza la copia

La celda de fecha es la F2 y la del otro dato es E2

Osea que esto debe ser así:

F2 = fecha y E2 el dato (ASÍ ESTA EN MI HOJA A COPIAR)

Format(Range("$F$2"), "yyyy-mm-dd") & "_" & Range("E2")

PERO

Lo tengo así y funciona

Y aqui me copia el libro (E2 = F2) y  (D2 = E2) 

Format(Range("$E$2"), "yyyy-mm-dd") & "_" & Range("D2")

No encuentro el motivo de esto

1 respuesta

Respuesta
1

No te entendí del todo: si funciona en algunos casos y en otros no el problema no está en el código sino en el contenido de tus celdas.

Enviame imagen o la hoja con la macro para revisarlo. Mi correo ya saben dónde está (en mi sitio ;)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas