Página 1 de 1
necesito definir macro para un formulario
Publicado: Mié Dic 10, 2008 3:52 pm
por nestor
hola, soy un ususrio de Open Office y necesito saber si hay una macro que me ayude para el envio por email de un formulario que ya tengo creado, pero por la poca experiencia en macros no he podido definir cual es la macro adecuada que al oprimir un boton del formulario me lo envie por email a una direccion determinada.
Agradezco en lo que me puedan colaborar.
Re: necesito definir macro para un formulario
Publicado: Jue Dic 11, 2008 8:22 am
por Jose Manuel
El formulario lo haces con base?
Re: necesito definir macro para un formulario
Publicado: Sab Dic 13, 2008 10:59 pm
por QuazzieEvil
en Basic, puedes usar una function de este tipo.
Código: Seleccionar todo
Function sendEmailMessage(mTo As String,mSubject As String, mBody As String, Attachements As Object,Optional UI As Integer) As Boolean
On Error Goto HandleError
Dim MailClient As Object
Dim MailAgent As Object
Dim MailMessage As Object
sendEmailMessage=False
If IsMissing(UI) Then
UI=com.sun.star.system.SimpleMailClientFlags.NO_USER_INTERFACE
End If
MailAgent=CreateUnoService("com.sun.star.system.SimpleSystemMail")
MailClient=MailAgent.querySimpleMailClient()
MailMessage=MailClient.createSimpleMailMessage()
MailMessage.setRecipient(mTo)
MailMessage.setSubject(mSubject)
MailMessage.setAttachement(Attachements)
MailClient.sendSimpleMailMessage(MailMessage, UI)
sendEmailMessage=True
HandleError:
If err<>0 Then
Exit Function
End If
End Function
Pero no he encontrado una manera de enviar el mensaje automaticamente y incluir el mensaje--solamente archivos. puedes incluir el mensaje, pero solo abriendo el programa de coreo (cambia .NO_USER_INTERFACEd a DEFAULTS or 0 ).
---
Otra manera seria usando Python.
Re: necesito definir macro para un formulario
Publicado: Lun Dic 15, 2008 10:32 pm
por nestor
No te entiendo la pregunta, por favor me explicas.
Gracias
Re: necesito definir macro para un formulario
Publicado: Mié Dic 17, 2008 4:05 am
por QuazzieEvil
aca esta un ejemplo. en el archivo adjunto hay instructiones de como salvar los macros, y asignarlos a un evento.
Esto solo funciona si tienes un programa de coreo como MS Outlook, Thunderbird, oh algo por el estilo. O sea de correo POP3.
Function principal
Código: Seleccionar todo
Sub cmdExportSendForm_OnClick(Event As Object)
Dim URL As String
Dim FormDoc As Object
Dim mTo As String
Dim mSubject As String
mTo="tu direccion de correo electronico"
mSubject="tema"
FormDoc=Event.Source.Model.Parent.Parent.Parent
URL=convertToURL("C:\TempFormExport.pdf")
exportBaseFormToPDF(FormDoc,URL)
sendEmailMessage(mTo,mSubject,"",Array(URL) )
Kill URL 'borrar archivo
End Sub
Esta funcion convierte el formulario de Base a PDF
Código: Seleccionar todo
Sub exportBaseFormToPDF(FormDoc As Object,SaveURL As String)
Dim Args(0) As New com.sun.star.beans.PropertyValue
Args(0).Name="FilterName" : Args(0).Value="writer_pdf_Export"
FormDoc.storeToURL(SaveURL,Args)
End Sub
y final mente, la funcion que manda el coreo
Código: Seleccionar todo
Function sendEmailMessage(mTo As String,mSubject As String, mBody As String, Attachements As Object,Optional UI As Integer) As Boolean
On Error Goto HandleError
Dim MailClient As Object
Dim MailAgent As Object
Dim MailMessage As Object
sendEmailMessage=False
If IsMissing(UI) Then
UI=com.sun.star.system.SimpleMailClientFlags.NO_USER_INTERFACE
End If
MailAgent=CreateUnoService("com.sun.star.system.SimpleSystemMail")
MailClient=MailAgent.querySimpleMailClient()
MailMessage=MailClient.createSimpleMailMessage()
MailMessage.setRecipient(mTo)
MailMessage.setSubject(mSubject)
MailMessage.setAttachement(Attachements)
MailClient.sendSimpleMailMessage(MailMessage, UI)
sendEmailMessage=True
HandleError:
If err<>0 Then
Exit Function
End If
End Function
Base solo puede imprimir formularios simples. Si tienes [Grid/Table Controls], esos no impriment bien. otra forma seria de crear un archivo de texto, enves del PDF.
Si prefieres un arhivo de texto, de demuestro despues como cearlo.
Espero que no te haya confundido mas, ya que mi español technico deja mucho que decear.
Re: necesito definir macro para un formulario
Publicado: Dom Dic 21, 2008 8:30 pm
por jza
SimpleMailClient no tiene esa habilidad de enviar mensajes. Es un servicio digamos "hard coded". Alternativamente tengo un script de python para enviar correo de Gmail por linea de comando. Quizas te ayude.
No estaras usando el servicio de SimpleMailClient pero quizas puedas resolver tu correo.
Código: Seleccionar todo
#!/usr/bin/python
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders
import os
gmail_user = "your_email@gmail.com"
gmail_pwd = "your_password"
def mail(to, subject, text, attach):
msg = MIMEMultipart()
msg['From'] = gmail_user
msg['To'] = to
msg['Subject'] = subject
msg.attach(MIMEText(text))
part = MIMEBase('application', 'octet-stream')
part.set_payload(open(attach, 'rb').read())
Encoders.encode_base64(part)
part.add_header('Content-Disposition',
'attachment; filename="%s"' % os.path.basename(attach))
msg.attach(part)
mailServer = smtplib.SMTP("smtp.gmail.com", 587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login(gmail_user, gmail_pwd)
mailServer.sendmail(gmail_user, to, msg.as_string())
# Should be mailServer.quit(), but that crashes...
mailServer.close()
mail("some.person@some.address.com",
"Hello from python!",
"This is a email sent with python",
"my_picture.jpg")
PD: Si te siver por que no liberar el codigo para que la comunidad aprenda? Necesitamos mas y mas ejemplos de PyUNO. Aqui puedes ver un repositorio de estos
trabajos que quiero mantener en el wiki.