¿Cómo solucionar error '1004' al ejecutar macro en Excel?

Estoy generando un documento Excel y he creado unas macros que me permiten exportar a pdf una información que se genera dentro de la propia hoja relativa a mis alumnos.

He querido complementar esa función de la hoja con una macro que me permite activar con un solo click todas las macros anteriores y poder así exportar la información de todos los alumnos de la clase de una sola sentada.

El problema se presenta de forma aleatoria con el siguiente mensaje de error:

Si abro la opción de depurar me señala una línea de código que en realidad no es errónea. Digo esto ya que tras haber ejecutado muchas veces la macro, observo que en ocasiones se ejecuta entera sin problemas y que, en otras ocasiones, me marca como errónea la línea de código correspondiente a algún alumno, pero si vuelvo a ejecutarla sin cambiar nada no me da fallo en la línea de ese alumno y si en otra o en ninguna. Lo aleatorio del error es lo que me tiene muy despistado.

Os dejo una muestra de la línea de código (ya que son 30 alumnos y ésta es muy larga)

Sub Exportar_todos()
'
' Exportar_todos Macro
Sheets("Alumno 01").Select
ruta = ThisWorkbook.Path & "\"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta & _
"" & Range("J2").Value & (" - ") & Range("M5").Value & (" - ") & Range("M4").Value, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Sheets("Alumno 02").Select
ruta = ThisWorkbook.Path & "\"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta & _
"" & Range("J2").Value & (" - ") & Range("M5").Value & (" - ") & Range("M4").Value, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Sheets("Alumno 03").Select
ruta = ThisWorkbook.Path & "\"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta & _
"" & Range("J2").Value & (" - ") & Range("M5").Value & (" - ") & Range("M4").Value, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
...
End Sub

Si a alguien se le ocurre a que puede deberse este error, le estaría muy agradecido si me arrojase algo de luz sobre el asunto.

1 Respuesta

Respuesta
1

H o l a:

El problema puede ser, si en alguna de las 3 celdas J2, M5, M4 tienes alguno de los caracteres no válidos para guardar archivos: "<> * / \ |

Revisa el contenido de las celdas, de cada hoja y elimina cualquier caracter que pueda ocasionar el problema.

Si en alguna de las celdas tienes una fecha, tienes que guardar la fecha con guión, por ejemplo, supongamos que en la celda J2 tienes una fecha, entonces tendrías que poner algo como esto:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta & _
"" & format(Range("J2").Value, "dd-mm-yyyy") & (" - ") & Range("M5").Value & (" - ") & Range("M4").Value, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Te anexo un cambio que le hice a la macro para generar los archivos pdf con un ciclo. La macro generará todos los archivos que la hoja empiece con la palabra "Alumno"

Sub Exportar_todos2() 'Exportar_todos Macro
'Act.Por.Dante Amor
    ruta = ThisWorkbook.Path & "\"
    For Each h In Sheets
        If Left(h.Name, 6) = "Alumno" Then
            h.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=ruta & h.Range("J2").Value & (" - ") & h.Range("M5").Value & (" - ") & h.Range("M4").Value, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
        End If
    Next
    MsgBox "Fin"
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Hola, Dante:

En primer lugar, muchas gracias por responder a mi pregunta. He probado por un lado introducir la macro que me has pasado y funciona estupendamente, pero vuelve a darme el mismo fallo de forma aleatoria. En ocasiones, se para en la generación del pdf de un alumno, otras veces en la de otro distinto y a veces también genera todos sin problema.

Realmente no sé que puede estar ocurriendo. En relación a los caracteres inválidos para generar archivos que me comentaste ("<> * / \ |), decirte que el nombre de los archivos no contiene ninguno de éstos. En un momento dado, comprobé si el fallo se debía a que algunos nombres o apellidos contuviesen tildes, pero no es el caso.

El nombre tipo del archivo que se genera es el siguiente:

CURSO - ASIGNATURA - Apellido1 Apellido2, Nombre

Cuando salta el error`1004` y abro la ventana de depurar, tanto con tu macro como con la que aporté al principio, el VBA me señala siempre en amarillo el mismo párrafo y con una flecha amarilla una misma línea. Adjunto la imagen a continuación.

No sé si con esta nueva información aporto se puede dar con la solución al problema. Igualmente, muchas gracias por tu primera respuesta y por tomarte tiempo para reflexionar sobre la problemática que planteaba.

Un cordial saludo,

Luis.

Envíame tu archivo para revisar los nombres.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Luis Luna” y el título de esta pregunta.

Hola:

Lo siento, pero no puedo enviarte el archivo por protección de datos. Pero es un problema aleatorio porque hace 1 hora ejecuté la macro y funcionó hasta el final sin problema alguno y al activarla hace tan solo 5 minutos ha fallado en el alumno 26.

No obstante, te quedo muy agradecido por toda tu atención y tiempo. Las dos veces que he consultado en esta página me has respondido y atendido muy eficaz y cordialmente.

Un saludo,

Luis.

En las pruebas que yo realicé no tuve problemas.

Tal vez puedas enviarme las hojas si información, solamente con el dato real que tienes en las celdas que se utilizan para formar el nombre del archivo.

Otra opción que se me ocurre, copia toda la información hoja por hoja a un nuevo libro, tal vez tienes algún problema en las hojas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas