Seite 1 von 1

Email Versand Macro

Verfasst: So 10. Apr 2022, 12:22
von Peter und Anita
Hallo zusammen,
bin ein erfolgloser Anfänger, habt Geduld mit mir :-). Ich möchte ein Tabellenblatt, per Schaltfläche / Macro, als Email versenden.
Habe hierzu ein Macro im Netz gefunden, leider funktioniert es nicht ganz wie gewünscht.
Es funktioniert: Klick auf die Schaltfläche, das PDF Export Fenster öffnet sich. Ich bestätige mit senden. Das Email Programm (Thunderbird) öffnet eine neue Email. Das PDF ist angehängt, mit dem Namen der ODF Datei. Im Betreff steht ebenfalls der Name der ODF Datei. So weit so gut.

Was nicht funktioniert: Ich habe zwei Emailadressen in Thunderbird hinterlegt. Es wird die Falsche Sende Mailadresse verwendet. Ich würde gerne die korrekte Adresse in einer Zelle hinterlegen, steht in F53.
Es wird keine Empfänger Adresse eingetragen. Diese Adresse steht in I19
Zudem möchte ich einen Mailtext einer Zelle hinterlegen und diesen Text automatisch in die Mail übernehmen, wenn sowas überhaupt möglich ist.

Leider bricht das Macro mit einer Fehlermeldung ab:
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.container.NoSuchElementException
Message: .

Freue mich über jede Hilfe, vielen lieben Dank.
Gruß
Peter

REM ***** BASIC *****
sub mail
REM Opens the PDF Export Options dialog.
REM Example Call: Send_As_PDF( "myemail@mydomain.com" )
REM Can be called without argument, then the ? Default Recipient ? will be used.
If IsMissing( strRecipient ) Then strRecipient = "I19" REM Default Recipient.
Dim oFrame As Object, oDispatch As Object
Dim aProps(0) As New com.sun.star.beans.PropertyValue
aProps(0).Name = "Recipient"
aProps(0).Value = strRecipient
oFrame = ThisComponent.CurrentController.Frame
oDispatch = createUnoService( "com.sun.star.frame.DispatchHelper" )
oDispatch.executeDispatch( oFrame, ".uno:SendMailDocAsPDF", "", 0, aProps() )
oDoc=Thiscomponent
oTab=oDoc.Sheets.getByName("der Tabellenname")
oZelle=oTab.getCellRangeByName("F53")
empfaenger=oZelle.string
End Sub

Nachtrag:
Es scheint wohl hier ein Problem zu geben.
oTab=oDoc.Sheets.getByName("der Tabellenname")
Den Tabellenname kann ich aber nicht FEST eingeben, da sich der Name der Dokuments ständig ändert.
Bin Planlos... :oops:

Nachtrag 2:
oTab=oDoc.Sheets.getByName("der Tabellenname")
Hier muss der Name vom Tabellen- Blatt eingetragen werden. Habe nun keine Fehlermeldung mehr.
Die Empfänger Email in F53 wird dennoch nicht eingetragen.... :shock:
oZelle=oTab.getCellRangeByName("F53")
empfaenger=oZelle.string

Re: Email Versand Macro

Verfasst: So 10. Apr 2022, 13:41
von Peter und Anita
1 Problem weniger: Was nicht funktioniert: Ich habe zwei Emailadressen in Thunderbird hinterlegt. Es wird die Falsche Sende Mailadresse verwendet. Man muss eine Adresse in Thunderbird als Standart auswählen. :D

Re: Email Versand Macro

Verfasst: So 10. Apr 2022, 22:16
von Pit Zyclade
Peter und Anita hat geschrieben:
So 10. Apr 2022, 13:41
...als Standart ...
Standard Oil Company, Standardisierung. Hat nichts mit "stand art" zu tun. :lol:

Re: Email Versand Macro

Verfasst: Mo 11. Apr 2022, 02:55
von gogo

Code: Alles auswählen

-compose ... from='sende@mail.adresse' ...
tut's auch

Re: Email Versand Macro

Verfasst: Mo 11. Apr 2022, 08:17
von Peter und Anita
Danke. Problem gelößt. So Funktioniert es:

Sub SendMail 'this is solution for button
doc = thisComponent
list = doc.getCurrentController.getActiveSheet
mailadress = list.GetCellRangeByName("I19").string
subject = list.GetCellRangeByName("D53").string
bodytext = list.GetCellRangeByName("B53").string
attachmentlink = list.GetCellRangeByName("G53").string

Mailer (mailadress, subject, bodytext, attachmentlink)

end sub

Sub HyperSendMail (sURL$) 'this is solution for function HYPERLINK in the sheet
mailadress = getArgumentFromURL(sURL,"MailAddress")
subject = getArgumentFromURL(sURL, "Subject")
bodytext = getArgumentFromURL(sURL, "Body")
attachmentlink = getArgumentFromURL(sURL, "Attach")

Mailer (mailadress, subject, bodytext, attachmentlink)

End Sub


Sub Mailer (eMailAddress as String, eSubject as String, eBody as String, Attachment as String)

Dim eMailer as Object
Dim eMailClient as Object
Dim eMessage as Object
Dim nFlag as integer


nFlag = 0
eMailer = createUnoService( "com.sun.star.system.SimpleSystemMail" )

eMailClient = eMailer.querySimpleMailClient()
eMessage = eMailClient.createSimpleMailMessage()

eMessage.setRecipient(eMailAddress)
eMessage.setSubject(eSubject)

if Attachment <> "" Then
eAttachmentURL = convertToUrl(Attachment)
eMessage.setAttachement (Array(eAttachmentURL))
end if

eBody = Replace(eBody,"*",chr(10))

eMessage.body = eBody

eMailClient.sendSimpleMailMessage( eMessage, nFlag)

End Sub