¿Cómo guardar hoja de excel con el siguiente nombre?

Buenos días, tengo una duda, en Excel tengo la siguiente macro:

Sub guardar()
'Inicio
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Resumen")
    fec = h1.[P2]
    bom = h1.[E4]
    ruta = "K:\Planta I\Informe de Turno\INFORME DE TURNO\INFORME DE TURNO\Activo\AÑO 2014"
    'ruta = l1.Path
    '
    'Crea nuevo libro y copia hojas
    l1.Sheets("Resumen").Copy
    Set l2 = ActiveWorkbook
    '
    mes = Month(Date)
    meses = Array("", "01 Enero", "02 Febrero", "03 Marzo", "04 Abril", "05 Mayo", "06 Junio", "07 Julio", _
                  "08 Agosto", "09 Septiembre", "10 Octubre", "11 Noviembre", "12 Diciembre")
    nd = meses(mes)
    '
    If Dir(ruta & "\" & nd, vbDirectory) = "" Then
        MkDir ruta & "\" & nd
    End If
    '
    nom = (fec) & (bom)
    l2.SaveAs ruta & "\" & nd & "\" & nom
    l2.Close
    MsgBox "¡Enviado con Exito!", vbInformation
End Sub


Todo funciona perfecto, pero me da un error y le doy en depurar, y me menciona que existe algún error en la línea:

l2.SaveAs ruta & "\" & nd & "\" & nom

Que está casi a lo ultimo, ¿qué hice mal? Ayudenme por favor, la "ruta" la declare arriba al principio, y "nom" est{a justo encima de esta línea, también la declaré.

1 respuesta

Respuesta
1

Te anexo la macro con los cambios. El problema está en la fecha, cuando intentas guardar el archivo con un nombre así "10/09/2014", el carácter "/" no es carácter válido para un nombre de archivo. Cambié la fecha para que ahora se guarde así "10-09-2014".

Sub guardar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Resumen")
    fec = h1.[P2]
    bom = h1.[E4]
    ruta = "K:\Planta I\Informe de Turno\INFORME DE TURNO\INFORME DE TURNO\Activo\AÑO 2014"
    'ruta = l1.Path
    '
    'Crea nuevo libro y copia hojas
    l1.Sheets("Resumen").Copy
    Set l2 = ActiveWorkbook
    '
    mes = Month(Date)
    meses = Array("", "01 Enero", "02 Febrero", "03 Marzo", "04 Abril", "05 Mayo", "06 Junio", "07 Julio", _
                  "08 Agosto", "09 Septiembre", "10 Octubre", "11 Noviembre", "12 Diciembre")
    nd = meses(mes)
    '
    If Dir(ruta & "\" & nd, vbDirectory) = "" Then
        MkDir ruta & "\" & nd
    End If
    '
    fec = Day(Format(fec, "00")) & "-" & Month(Format(fec, "00")) & "-" & Year(fec)
    nom = (fec) & (bom)
    l2.SaveAs ruta & "\" & nd & "\" & nom
    l2.Close
    MsgBox "¡Enviado con Exito!", vbInformation
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Gracias! Pero otra cosa amigo, "bom" se la asigne a la celda E4 y es un nombre, por ejemplo "Gerardo Vivas" y quiero que salga EL NOMBRE ASÍ:

29-09GerardoVivas

Lo único que me está guardando es la fecha :/

Disculpa que salga así: "29-09 Gerardo Vivas"

El "bom" debe estar en la celda E4 de la hoja Resumen, si la cela está vacía no te va a poner nada.

Si solamente quieres el día y el mes, cambia esta línea

fec = Day(Format(fec, "00")) & "-" & Month(Format(fec, "00")) & "-" & Year(fec)

por esta

fec = Day(Format(fec, "00")) & "-" & Month(Format(fec, "00"))

Y para poner un espacio entre la fecha y el nombre cambia esta lína

nom = (fec) & (bom)

Por esta

nom = fec & " " & bom

Revisa que efectivamente tengas en la celda E4 un nombre, yo lo probé y si me pone el nombre en el nombre del archivo.

Saludos. Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas