Word, Outlook y vb6 ...

08/02/2011 - 15:42 por Calcu | Informe spam
Pues eso, que una vez desarrollada toda la aplicacion, me toca ponerla
"bonita"..., tengo un reporte que se dbe enviar por correo electronico y la
manera que he pensado es:

1.- tengo un formulario de Word, con sus campos a rellenar.
2.- lo abro con vb6, lo relleno con los registros del programa y lo guardo
como Html
3.- lo abro con outlook e intento embeberlo.

y el resultado deberia ser un email con mi formulario incrustado en él, pero
no... o no salen todas las imagenes o no incrusta nada... alguna idea?, o
alguna manera mejor de hacerlo?

un poco de codigo, a ver si veis algo raro!


'verificar que no este abierto el documento

Set MSWord = GetObject(, "Word.Application")
If Err <> 0 Then
Err.Clear
Set MSWord = CreateObject("Word.Application", "")
MSWord.Visible = True
Else
If MSWord.Visible = False And MSWord.Documents.Count > 0 Then
MSWord.Visible = True
End If
End If

Dim Doc As Object
Dim DocFound As Boolean, NumDoc As Integer
DocFound = False
For Each Doc In MSWord.Documents
DoEvents
If "F:\" & Doc.Name = "F:\Pentatrans Modelo.doc" Then
DocFound = True
Exit For
End If
Next Doc

NumDoc = MSWord.Documents.Count

If DocFound = False Then
'MSWord.Application.WindowState = wdWindowStateMaximize
MSWord.Documents.Open "F:\Pentatrans Modelo.doc", , True
Else
If MSWord.Application.WindowState = wdWindowStateMinimize Then
MSWord.Application.WindowState = wdWindowStateMaximize
End If
End If

Abro mi bdd y relleno:

If Rs.State = 1 Then
Rs.Close
End If

Tabla = "EXPE" & Anyobus
Sql = "SELECT * FROM " & Tabla & " WHERE NUMEXPE = " & Text1.Text
Rs.Source = Sql
Rs.Open , BCN, adOpenDynamic, adLockOptimistic

If Rs.EOF = True Then
MsgBox "Expedicion no existe"
On Error GoTo 0
Exit Sub
End If

MSWord.ActiveDocument.ActiveWindow.Document.FormFields("Numexpe").Result
= Text1.Text
.

MSWord.Activate
MSWord.ActiveDocument.SaveAs "C:\Formulario1.htm", wdFormatHTML

MSWord.Quit False
Set MSWord = Nothing

DoEvents

ahora nos metemos con el outlook

Dim objOutlook As Object
Dim objEMail As Object

Set objOutlook = GetObject(, "Outlook.Application")
If objOutlook Is Nothing Then Set objOutlook =
CreateObject("Outlook.Application")

Set objEMail = objOutlook.CreateItem(0)

With objEMail
.Subject = "Incidencia : " & Text1.Text
.Attachments.Add "c:\Formulario1.htm", olEmbeddeditem
.Display
End With

Set objEMail = Nothing
Set objOutlook = Nothing

On Error GoTo 0
Exit Sub
 

Leer las respuestas

#1 Leonardo Azpurua
08/02/2011 - 21:50 | Informe spam
"Calcu" escribió en el mensaje
news:iirkuu$rtq$
Pues eso, que una vez desarrollada toda la aplicacion, me toca
ponerla "bonita"..., tengo un reporte que se dbe enviar por correo
electronico y la manera que he pensado es:

1.- tengo un formulario de Word, con sus campos a rellenar.
2.- lo abro con vb6, lo relleno con los registros del programa y lo
guardo como Html
3.- lo abro con outlook e intento embeberlo.

y el resultado deberia ser un email con mi formulario incrustado en
él, pero no... o no salen todas las imagenes o no incrusta nada...
alguna idea?, o alguna manera mejor de hacerlo?



Hola,

Imagino que al guardar como HTML (que no contiene imagenes, sino
referencias a las imagenes) es normal que las imagenes no lleguen al
destinatario del correo (ya que cualesquiera referencias contenidas en
el archivo HTML serán relativas a su ubicacion en el sistema de
archivos (file://) del equipo de origen.

La opcion más simple sería guardar el archivo de Word y adjuntarlo al
mensaje de correo (si el receptor tiene Word u Open Office debería
poder abrirlo sin problemas).

Otra sería colocar las imagenes (si son estandar) en un servidor Web,
y pasar por el documento HTML generado reemplazando las referencias
locales por referencias a las imagenes correspondientes en dicho
servidor.

Otra es probar con alguna librería para el envío de correo. Alguna vez
he enviado cosas usando VBSendMail, y normalmente funciona.

Salud!

Preguntas similares