Envío de informe por correo cambiando nombre

Estoy intentando enviar por correo desde access un informe en pdf cuyos datos varían en función del formulario que lo crea.
Hasta aquí todo bien,, pero me he dado cuenta de que el nombre del documento .pdf que envía es, lógicamente, el del informe, pero no me sirve ya que tengo varios formularios similares y necesitaría que todos los pdf que envíen tengan un nombre común.
Te pego el código que he usado para que lo veas más claro.
Private Sub envio_email_Click()
On Error GoTo Err_envio_email_Click
Dim Correo As String
Correo = Me.email
DoCmd.SendObject acSendReport, "Pedidos desde añadir", acFormatPDF, Correo, , "[email protected]", "Pedido nº " & [NumPedido], "Le envio una solicitud de Pedido." & "Muchas gracias", True
Exit_envio_email_Click:
    Exit Sub
Err_envio_email_Click:
    MsgBox Err.Description
    Resume Exit_envio_email_Click
End Sub
Como ves el nombre del informe (el pdf que me crea) es bastante feo para enviárselo a un proveedor o a quien sea.
¿Se puede hacer de alguna forma para que el archivo pdf generado aparezca con un nombre concreto en lugar de tomar el del informe? Estoy más que justito en programación.

3 Respuestas

Respuesta
1
Si no recuerdo mal, después del ultimo TRUE, tienes la posibilidad de darle nombre al documento.
Ya me dirás si es así.
Gracias por responder.
Pues creoq ue no es así, parece que es para utilizar un archivo HTML como plantilla o algo así.
Te pongo lo que dice la ayuda de access por si te dice algo más que a mi :D
Una expresión de cadena que es el nombre completo, incluyendo la ruta de acceso, del archivo que desea usar como plantilla para un archivo HTML (HTML: lenguaje de marcado estándar utilizado para los documentos del World Wide Web. HTML utiliza etiquetas para indicar cómo deben mostrar los exploradores Web los elementos de página, como texto y gráficos, y cómo deben responder a las acciones del usuario.)
¿Alguna idea?
Gracias
Ya te dije que "si no recuerdo mal", je je, oea que recordé mal.
La sintaxis es: DoCmd. SendObject acReport, "Nombre Informe", "RichTextFormat(*.rtf)", Me. Para, "", "", "El Asunto", Me. TextoMensaje, False, ""
Prueba a poner en "Nombre Informe", el nombre que quieras que te aparezca.
Buenos días.
Lo de "nombre informe" debe ser el nombre del informe a enviar, por lo que al poner otro me dice que no sabe que enviar.
He descubierto que el nombre del documento que se genera es el del "título" del informe (no sé si se llama "prpopiedad titulo" o algo así), no el del nombre del mismo.
Si supiera como cambiarle el titulo (que no el nombre) desde comandos me valdría para cambiarlo cada vez y poder algo más acorde con el destinatario.
¿Conoces algún comando para que pueda cambiar el titulo de un informe?
Muchas gracias
Este procedimiento cambia el nombre del objeto que quieras
Le tienes que pasar el tipo de objeto que está enumerado como una constante
del tipo AcObjectType
Su valor para el informe es acReport
Ejemplo
RenombrarObjeto "InformeAnterior","InformeNuevo", acReport
________________________________________________
Public Sub RenombrarObjeto( _
ByVal ObjetoAnterior As String, _
ByVal ObjetoNuevo As String, _
Tipo As AcObjectType)
On Error GoTo HayError
DoCmd.CopyObject , ObjetoNuevo, Tipo, ObjetoAnterior
DoCmd.DeleteObject Tipo, ObjetoAnterior
Salir:
Exit Sub
HayError:
MsgBox "Se ha producido el error nº: " _
& Err.Number _
& vbCrLf _
& Err.Description, _
vbCritical + vbOKOnly, _
" Error al renombrar el objeto " _
& ObjetoAnterior
Resume Salir
End Sub
Respuesta
1
Lo que se me ocurre, así a bote pronto, es que en lugar de utilizar directamente el método sendreport, utilices primero OutputTo, que te permite definir un nombre de archivo para el objeto informe. Luego puedes utilizar el send object para enviar dicho archivo.
Gracias por responder.
Como te decía no sé mucho de programación. ¿Podrías darme un ejemplo o alguna pista de como hacerlo?
Gracias.
Disculpa, he estado probando el método que te sugerí y requeriría cambiar el nombre del propio informe antes de enviarlo, lo cual te crearía un conflicto con la consulta o el formulario de referencia.
Sin embargo lo que si puedes hacer es copiar el informe y crear un duplicado con un nuevo nombre que tu elijas, y luego ejecutar el método send object sobre el informe duplicado.
Para ello, antes de la línea del SendObject escribe esta otra
DoCmd. CopyObject, "nombrenuevo", acReport, "nombreactual"
Si tienes informes con varios nombres, suponiendo que fueran informe1, informe2, informe3, informe4 y tu quieres que siempre salga con el nombre INFORME, puedes crear varias líneas como la anterior variando el nombreactual con las diferentes opciones de informes que se generen y preceder cada línea con un On Error Resume Next. Otra opción es que puedas identificar que reporte has generado asignándole una variable que lo identifique o distinga y crear una variable de Texto (String) que se llame por ejemplo VNOMBREACTUAL a la que le asignarás el nombre del informe generado, esto lo puedes hacer con un Select Case. (Si me dices los nombres posibles, te genero un ejemplo). Entonces la línea quedaría así:
OnError Resume Next
DoCmd.CopyObject , "nombrenuevo", acReport, "nombreactual1"
OnError Resume Next
DoCmd.CopyObject , "nombrenuevo", acReport, "nombreactual2"
OnError Resume Next
DoCmd. CopyObject, "nombrenuevo", acReport, "nombreactual3"
O una sola así
DoCmd. CopyObject, "nombrenuevo", acReport, VNOMBREACTUAL
Otra cosa, después de ejecutar el SendObject, debes colocar una línea para eliminar el informe nuevo (la copia), ya que en el próximo envío, si no lo borras, a la nueva copia el sistema le agregará al final del nombre un número correlativo o te preguntará si quieres sustituirlo, de esta forma te ahorras ese paso.
DoCmd. DeleteObject acReport, "nombrenuevo"
Si requieres más detalles me avisas.
Muchas gracias Tony.
Probando lo que me has dicho me extrañé de que, aún llamándose de otra forma el informe, el pdf que generaba se llamaba igual que informe original.
Así me he dado cuenta de que simplemente le puedo cambiar el titulo (no el nombre) al informe y ponerle uno más correcto (por ejemplo "Pedido") y ya sale bien.
Perdona por no haberme dado cuenta antes y hacerte perder tu tiempo.
Para acabar de rizar el rizo, ¿conoces algún comando para que pueda cambiar el titulo (no se si llama propiedad "título") de un informe?
De esta forma podría hacer que el archivo que envía se llamara como una variable del informe (el nº de pedido por ejemplo) y al terminar que le ponga otra vez el titulo "genérico".
¿Sabes cómo podría hacerlo? Muchas gracias
La propiedad del titulo es CAPTION.
nombredelinforme.Caption="titulo"
Muy bien.
Me temo que así no funciona. He puesto para pdrobar desde un botón
Informes![Pedidos desde editar].Caption = "Nombre"
Pero da un error 424 (se esperaba un objeto).
¿Qué he puesto mal?
Muchas gracias
Reports![Pedidos desde editar]. Caption="Nombre"
Respuesta
I si lo imprimes en formato pdf
Y luego le cambias el nombre
Posteriormente lo envías por cualquier cuenta de correo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas