macro per invio automatico di mail con allegato

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

macro per invio automatico di mail con allegato

Messaggio da ivan7 »

Ciao a tutti, sono un nuovo membro del forum.
Ho creato due semplici macro x inviare una mail con allegato il foglio di lavoro in uso in formato pdf.
Il mio problema è che con la prima macro non mi inserisce il corpo del testo (body), nella seconda macro non mi allega il file pdf.
Chi mi può aiutare?
Prima macro:

Codice: Seleziona tutto

REM invia mail senza body ma con allegato pdf
sub inviaemail
Doc = ThisComponent
Controller = Doc.CurrentController
Sheet = Controller.ActiveSheet
document = Controller.Frame
body = "Gentile Cliente"
Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Dim mArgs(2) As New com.sun.star.beans.PropertyValue
  mArgs(0).Name = "Recipient"
  mArgs(0).Value = Sheet.getCellRangeByName("I4").String
  mArgs(1).Name = "Subject"
  mArgs(1).Value = "Avviso riparazioni"
  mArgs(2).Name = "body"
  mArgs(2).Value = body
  dispatcher.executeDispatch(document, ".uno:SendMailDocAsPDF", "", 0, mArgs())    
End Sub
Seconda macro:

Codice: Seleziona tutto

REM invia mail senza allegato pdf ma con body
Sub inviaemail
Doc = ThisComponent
Controller = Doc.CurrentController
Sheet = Controller.ActiveSheet
document = Controller.Frame
'Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Cell = Sheet.getCellrangeByName("I4") 'mail
eMailAddress = Cell.String
eSubject = "Avviso riparazioni"
eBody = "Gentile Cliente"
eMailer = createUnoService("com.sun.star.system.SystemMailProvider")
eMailClient = eMailer.queryMailClient()
eMessage = eMailClient.createMailMessage()
eMessage.Recipient = eMailAddress
eMessage.Subject = eSubject
eMessage.Body = eBody
'dispatcher.executeDispatch(document, ".uno:SendMailDocAsPDF", "", 0, Array())
eMailClient.sendMailMessage(eMessage, com.sun.star.system.MailClientFlags.NO_USER_INTERFACE)
End Sub
Apache OpenOffice 4.1.2 su Windows Vista
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: macro per invio automatico di mail con allegato

Messaggio da unlucky83 »

ciao, hai provato a cercare nel forum? Ultimamente é un argomento trattato di frequente.
search.php?keywords=invio+mail&terms=al ... bmit=Cerca
Fai sapere se risolvi o meno, così ti diamo una mano ;)
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

Re: macro per invio automatico di mail con allegato

Messaggio da ivan7 »

si ho guardato ma non ho trovato la soluzione x me.
Ho provato a fare delle modifiche ma il risultato è quello sopra citato...
non so più cosa fare :(
Apache OpenOffice 4.1.2 su Windows Vista
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per invio automatico di mail con allegato

Messaggio da patel »

io non utilizzo client e quindi non posso testare, le versioni senza client funzionano bene, sono già testate da diversi utenti
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

Re: macro per invio automatico di mail con allegato

Messaggio da ivan7 »

mi puoi dare un esempio senza client?
magari con la conversione del foglio in uso in pdf :)
grazie
Apache OpenOffice 4.1.2 su Windows Vista
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per invio automatico di mail con allegato

Messaggio da patel »

gli esempi te li ha indicati unlucky83
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

Re: macro per invio automatico di mail con allegato

Messaggio da ivan7 »

ho già guardato ma purtroppo nn ho trovato la soluzione x me.
L'invio della mail lo fa in entrembe le macro che fatto, ma nella prima nn mi inserisce il corpo del testo, l'altra inserisce il corpo del testo ma nn mi allega il pdf.
Il mio problema principale è come inserire il body direttamente nella macro e nn con riferimento ad un cella del foglio...
Aiutooooo
Apache OpenOffice 4.1.2 su Windows Vista
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per invio automatico di mail con allegato

Messaggio da patel »

Ammettiamo che tu abbia il pdf già pronto, ti funziona questa ?

Codice: Seleziona tutto

Sub inviaemail
Doc = ThisComponent
Controller = Doc.CurrentController
Sheet = Controller.ActiveSheet
document = Controller.Frame
'Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Cell = Sheet.getCellrangeByName("I4") 'mail
eMailAddress = Cell.String
eSubject = "Avviso riparazioni"
eBody = "Gentile Cliente"
eMailer = createUnoService("com.sun.star.system.SystemMailProvider")
eMailClient = eMailer.queryMailClient()
eMessage = eMailClient.createMailMessage()
eMessage.Recipient = eMailAddress
eMessage.Subject = eSubject
eMessage.Body = eBody
eMessage.Attachement = "percorso del file pdf" '<<<<<<<<<<<<< mettere il percorso corretto
eMailClient.sendMailMessage(eMessage, com.sun.star.system.MailClientFlags.NO_USER_INTERFACE)
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

Re: macro per invio automatico di mail con allegato

Messaggio da ivan7 »

Grazie patel
Mi da:
Errore di runtime BASIC.
Variabile dell'oggetto non impostata.
Sulla riga: eMessage.Attachement = …...
Apache OpenOffice 4.1.2 su Windows Vista
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per invio automatico di mail con allegato

Messaggio da patel »

prova
eMessage.setAttachement =
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

Re: macro per invio automatico di mail con allegato

Messaggio da ivan7 »

Altro errore:
Errore di runtime BASIC.
Proprietà o metodo non trovati: setAttachement.
Apache OpenOffice 4.1.2 su Windows Vista
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per invio automatico di mail con allegato

Messaggio da patel »

cosa hai scritto in questa riga ?
eMessage.Attachement = "percorso del file pdf" '<<<<<<<<<<<<< mettere il percorso corretto
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

Re: macro per invio automatico di mail con allegato

Messaggio da ivan7 »

ho provato in vari modo:
eMessage.Attachement = "C:\Documents and Settings\io\Desktop\xxx.pdf"
eMessage.Attachement = ("file:///C:\Documents and Settings\io\Desktop\prove\xxx.pdf")
eMessage.Attachement = "file:///C:\Documents and Settings\io\Desktop\prove\xxx.pdf"
Apache OpenOffice 4.1.2 su Windows Vista
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per invio automatico di mail con allegato

Messaggio da patel »

eMessage.Attachement = "file:///C:/Documents and Settings/io/Desktop/prove/xxx.pdf"
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

Re: macro per invio automatico di mail con allegato

Messaggio da ivan7 »

ho provato ma continua a darmi lo stesso errore.
Errore di runtime BASIC.
Variabile dell'oggetto non impostata.
Boh :(
Apache OpenOffice 4.1.2 su Windows Vista
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

Re: macro per invio automatico di mail con allegato

Messaggio da ivan7 »

con questa modifica funziona
AttachmentURL = convertToUrl("file:///C:/Documents and Settings/io/Desktop/prove/xxx.pdf")
eMessage.Attachement = Array(AttachmentURL)

ora però vorrei creare il pdf del foglio in uso
Apache OpenOffice 4.1.2 su Windows Vista
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per invio automatico di mail con allegato

Messaggio da patel »

prova così

Codice: Seleziona tutto

SUB esporta_Fogli_PDF ' nasconde i fogli da non salvare
oDoc = ThisComponent
oSheets = oDoc.Sheets()
oActiveSheet = oDoc.CurrentController.ActiveSheet()
For Each oSh In oSheets
If oSh.Name <> "Foglio1" Then ' <<<<<< nome del foglio da salvare in pdf
     oSh.IsVisible = False   
  End If
Next
   Dim mStoreOpts(1) As New com.sun.star.beans.PropertyValue
   mStoreOpts(0).Name = "Overwrite"
   mStoreOpts(0).Value = True
   mStoreOpts(1).Name = "FilterName"
   mStoreOpts(1).Value = "calc_pdf_Export"
   sUrl =  "file:///F:/Download/test.PDF" ' <<<<<<<< percorso del file
   oDoc.storeToURL(sUrl, mStoreOpts())
For Each oSh In oSheets
     oSh.IsVisible = True
Next   
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per invio automatico di mail con allegato

Messaggio da patel »

ivan7 ha scritto:con questa modifica funziona
AttachmentURL = convertToUrl("file:///C:/Documents and Settings/io/Desktop/prove/xxx.pdf")
eMessage.Attachement = Array(AttachmentURL)
vedrai che funziona anche così

Codice: Seleziona tutto

AttachmentURL = convertToUrl("C:\Documents and Settings\io\Desktop\prove\xxx.pdf")
eMessage.Attachement = Array(AttachmentURL)
è risolutivo l'uso della funzione Array che consente l'invio di più allegati
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

Re: macro per invio automatico di mail con allegato

Messaggio da ivan7 »

esatto funziona nello stesso modo
adesso devo riuscire ad allegare il foglio di calc in uso, ma trasformato in pdf, alla mail
ho provato con:

Codice: Seleziona tutto

dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 dispatcher.executeDispatch(document, ".uno:SendMailDocAsPDF", "", 0, mArgs())
ma nn funziona :(
Apache OpenOffice 4.1.2 su Windows Vista
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per invio automatico di mail con allegato

Messaggio da patel »

patel ha scritto:prova così

Codice: Seleziona tutto

SUB esporta_Fogli_PDF ' nasconde i fogli da non salvare
oDoc = ThisComponent
oSheets = oDoc.Sheets()
oActiveSheet = oDoc.CurrentController.ActiveSheet()
For Each oSh In oSheets
If oSh.Name <> "Foglio1" Then ' <<<<<< nome del foglio da salvare in pdf
     oSh.IsVisible = False   
  End If
Next
   Dim mStoreOpts(1) As New com.sun.star.beans.PropertyValue
   mStoreOpts(0).Name = "Overwrite"
   mStoreOpts(0).Value = True
   mStoreOpts(1).Name = "FilterName"
   mStoreOpts(1).Value = "calc_pdf_Export"
   sUrl =  "file:///F:/Download/test.PDF" ' <<<<<<<< percorso del file
   oDoc.storeToURL(sUrl, mStoreOpts())
For Each oSh In oSheets
     oSh.IsVisible = True
Next   
End Sub
l'hai provato ?
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

Re: macro per invio automatico di mail con allegato

Messaggio da ivan7 »

qualcosa nn mi torna...
il nome del foglio deve essere uguale al nome del file nel percorso del file?
la SUB esporta_Fogli_PDF va di seguito alla Sub inviaemail?
ed il percorso AttachmentURL = convertToUrl("C:\Documents and Settings\io\Desktop\prove\xxx.pdf")
nella Sub inviaemail va cambiato?
Apache OpenOffice 4.1.2 su Windows Vista
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per invio automatico di mail con allegato

Messaggio da patel »

ti poni troppi problemi tutti insieme, non pensare all'email, prova soltanto la sub che ti ho allegato, funziona o no ? te lo crea il pdf ?
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

Re: macro per invio automatico di mail con allegato

Messaggio da ivan7 »

una cosa alla volta...hai ragione!
no non funziona nn mi crea il pdf
Apache OpenOffice 4.1.2 su Windows Vista
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per invio automatico di mail con allegato

Messaggio da patel »

sempre telegrafico, ti da errore ? produce un file vuoto ? insomma vuoi essere aiutato o no ?
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

Re: macro per invio automatico di mail con allegato

Messaggio da ivan7 »

hai ragione sono troppo conciso, rimedio.
Se lancio solo la SUB esporta_Fogli_PDF mi segnala come errore:
Errore di runtime BASIC.
Si è verificato un eccezione
Type: com.sun.star.task.ErrorCodeIOExceptionMessage: .
indicando la riga:
oDoc.storeToURL(sUrl, mStoreOpts())

Mentre se lancio entrambe le sub (inviaemail ed esporta_Fogli_PDF) invia la mail ma con allegato il file creato precedentemente nella cartella prove
e non il file del foglio in uso e non crea il pdf del foglio in uso.
Spero di essere stato esauriente e chiaro...

Oltre ai miei ringraziamenti x l'aiuto...porgo i miei auguri x le feste!!! :D
Apache OpenOffice 4.1.2 su Windows Vista
ivan7
Messaggi: 14
Iscritto il: martedì 20 dicembre 2016, 12:57

Re: macro per invio automatico di mail con allegato

Messaggio da ivan7 »

Ciao a tutti scusate l'assenza ma sono stato molto impegnato.
Però forse ho trovato la soluzione al mio problema.

Codice: Seleziona tutto

REM invia mail con body ed allegato pdf del foglio in uso
Sub inviaemail
Doc = ThisComponent
Controller = Doc.CurrentController
Sheet = Controller.ActiveSheet
document = Controller.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")	'apre finestra Opzioni PDF > Generale > Intervallo: selezione
dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, Array())
Cell = Sheet.getCellrangeByName("I4") 'mail
eMailAddress = Cell.String
eSubject = "Avviso riparazioni eseguite"
eBody = "Gentile Cliente," & Chr(10) & _ 
	"La presente per comunicare che le riparazioni del xx.xx.xxxx sono pronte per essere spedite." & Chr(10) & Chr(10) &_
	"Distinti saluti!" & Chr(10) & Chr(10)	
'    "Distinti saluti" & Chr(10) & _
'    Environ("Username") & Chr(10) & Chr(10)
eMailer = createUnoService("com.sun.star.system.SystemMailProvider")
eMailClient = eMailer.queryMailClient()
eMessage = eMailClient.createMailMessage()
eMessage.Recipient = eMailAddress
eMessage.Subject = eSubject
eMessage.Body = eBody
attachmentURL = convertToUrl("C:\Documents and Settings\io\Desktop\prove\rapporto riparazione.pdf")	'fare riferimento alla cartella dove salvare il file pdf
eMessage.Attachement = Array(AttachmentURL)
eMailClient.sendMailMessage(eMessage, com.sun.star.system.MailClientFlags.NO_USER_INTERFACE)
End Sub
Manca solo una cosa, questa funziona con outlook, ma non con thunderbird...qual'è la differenza?
Chi mi può aiutare?
Apache OpenOffice 4.1.2 su Windows Vista
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: macro per invio automatico di mail con allegato

Messaggio da patel »

nella macro non ci sono riferimenti ad Outlook che probabilmente è il tuo client predefinito, quindi devi trovare il modo di dire a OO di usare thunderbird , penso nelle opzioni.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Rispondi