Access - Agregar resultados de Query mediante Outlook

 
Vista:

Agregar resultados de Query mediante Outlook

Publicado por Rafael Noguera (1 intervención) el 14/08/2014 01:59:42
Hola,
Esta es la situación, tengo una query que genera cierta información y deseo poder enviar esos resultados en el cuerpo del correo en Outlook (.HTMLBody) mediante vba sin tener que exportar y agregarlo como un archivo adjunto.

Puedo hacer que los registros queden en el portapapeles y abrir el correo, sin embargo tengo que presionar CTRL + V para pegar los resultados.

Cabe mencionar que he activado las referencias Microsoft Outlook 12.0 / Microsoft Forms 2.0 para poder llevar a cabo el proceso, esta es la rutina:

De antemano muchas gracias!

Dim objOutlook As New Outlook.Application
Dim objMessage As MailItem
Dim sQueryName As String
Dim MyData As DataObject
Dim records As String

Set objMessage = objOutlook.CreateItem(olMailItem)

Set MyData = New DataObject

'-------------------------------------- AQUI ABRE LA QUERY Y COPIA LOS REGISTROS --------------------------------------

Application.Echo False

sQueryName = "general"

DoCmd.OpenQuery sQueryName, acViewNormal, acReadOnly

DoCmd.RunCommand acCmdSelectAllRecords

DoCmd.RunCommand acCmdCopy

DoCmd.Close acQuery, sQueryName

Application.Echo True

'-------------------------------------- AQUI ABRE EL CORREO ELECTRONICO --------------------------------------

On Error Resume Next

records = MyData.GetText(1)

With objMessage

.To = "xxxx@xxxxcom"
.Subject = "abcde"
.HTMLBody = records
.Importance = olImportanceHigh
.Display

End With

Set objOutlook = Nothing

Set objMessage = Nothing

DoCmd.SetWarnings True

End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Agregar resultados de Query mediante Outlook

Publicado por Neckkito (1157 intervenciones) el 16/08/2014 17:01:10
Hola Rafael:

Si bien yo prácticamente no he utilizado el DataObject lo que estoy viendo es que en tu rutina no estás pasando el contenido del portapapeles al objeto MyData. Es decir, que, para entendernos, tú no "rellenas" la información en MyData para después extraerla a través de GetText.

Arreglar eso sería tan simple como modificar tu código así (te pongo sólo la parte que debería modificarse):

...
'-------------------------------------- AQUI ABRE EL CORREO ELECTRONICO --------------------------------------

On Error Resume Next

MyData.GetFromClipboard

records = MyData.GetText(1)
...

¿Cuál es el problema? Que hasta donde yo sé el objeto DataObject trabaja con texto plano. Eso significa que el resultado que vas a ver no va a gustarte en absoluto.

He estado echando un vistazo a los métodos del DataObject y, aunque hay algunos que hablan de formato, he sido incapaz de encontrar alguno que funcione y te pase al cuerpo del mensaje la información en el formato que te devuelve al pulsar ctrl+V.

Dices que no lo quieres enviar como adjunto. Tus motivos tendrás, pero quizá una solución sería exportar la consulta a pdf (o el informe equivalente) en la ruta de la BD (o en una carpeta "Tmp" en la ruta de la BD) e iniciar la rutina con un kill (ruta\nombre.extension), dando por supuesto que siempre guardas el archivo exportado con el mismo nombre, o también "machando" el archivo que pudiera existir a través de la sobreescritura del mismo. Cierto es que siempre te quedará un archivo en la carpeta Tmp, pero para eso están las temporales. Si tanto te desagrada que quede incluso podrías programar el borrado de ese archivo en el evento "Al cerrar" del formulario, con lo que te quedaría todo "limpio".

Lamento no poder darte más información directa de cómo solventar tu problema, pero quizás las ideas que te he aportado te sirvan como base para poder profundizar en la búsqueda de una posible solución o para adoptar un método alternativo.

Un saludo,
firmaMail
http://neckkito.siliconproject.com.ar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Agregar resultados de Query mediante Outlook

Publicado por Neckkito (1157 intervenciones) el 16/08/2014 17:10:39
Hola de nuevo, Rafael:

"Creo" que ha sonado la campanilla... a medias, pero quizá la solución hallada pudiera servirte.

Aunque sigo sin encontrar la manera de copiar exactamente el formato que se obtiene al pegar con ctrl+V si lo que te interesa más son los datos en sí he "decubierto" que puedes obtenerlos en forma tabular, lo cual tiene mucho más sentido que obtenerlos "linealmente" (si aplicaras la solución que te daba en mi primer mensaje).

Para ello lo que tienes que hacer es:

- Añadir esa línea de código que te indicaba en mi primer mensaje (la de getfromclipboard)
- En la configuración del objeto Outlook no utilices para el cuerpo del mensaje el formato html, sino el "normal". Es decir , que tu línea:

.HTMLBody = records

debería quedarte simplemente en

.Body = records

A ver si con este resultado hemos obtenido una solución que te sea satisfactoria.

Un saludo,

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar