necesito definir macro para un formulario
necesito definir macro para un formulario
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.
Agradezco en lo que me puedan colaborar.
-
- Mensajes: 99
- Registrado: Vie Nov 21, 2008 8:09 am
Re: necesito definir macro para un formulario
El formulario lo haces con base?
Un saludo
Jose manuel
Jose manuel
-
- Mensajes: 99
- Registrado: Sab Dic 13, 2008 6:45 pm
Re: necesito definir macro para un formulario
en Basic, puedes usar una function de este tipo.
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.
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
---
Otra manera seria usando Python.
Re: necesito definir macro para un formulario
No te entiendo la pregunta, por favor me explicas.
Gracias
Gracias
-
- Mensajes: 99
- Registrado: Sab Dic 13, 2008 6:45 pm
Re: necesito definir macro para un formulario
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
Esta funcion convierte el formulario de Base a PDF
y final mente, la funcion que manda el coreo
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.
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
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
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
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.
- Adjuntos
-
- MacroAsignSteps.zip
- (84.92 KiB) Descargado 334 veces
Última edición por QuazzieEvil el Mar Dic 23, 2008 12:44 am, editado 1 vez en total.
Re: necesito definir macro para un formulario
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.
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.
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")
Alexandro Colorado
http://es.openoffice.org
http://es.openoffice.org