Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1640to1644
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Einbau von .SendUsingAccount in VBA Code

Einbau von .SendUsingAccount in VBA Code
06.09.2018 23:30:30
Frank

Hallo,
ich habe mir aus Fundstücken und mit Hilfe hier im Forum einen VBA-Code zusammengebastet, der PDFs erzeugt, verschickt und druckt https://www.herber.de/forum/archiv/1640to1644/t1640252.htm. Nun möchte ich noch erreichen, dass die Mail von einem bestimmten Mailaccount aus verschickt wird. Deshalb wollte ich
Set .SendUsingAccount = .Session.Accounts.Item("info@domain.de")
in den Code einbauen. Ich habe natürlich sichergestellt, dass in Outlook ein Pop3 Account für info@domain.de existiert und auch darüber versendet werden kann. Ich nutze vermutlich die falsche Syntax oder platziere die Zeile falsch. Vor dem Send Befehl erhalte ich Fehler "5 Ungültiger Prozeduraufruf oder ungültiges Argument VBAProjekt", baue ich es danach ein, kommt Fehler "-2147221238 Das Element wurde verschoben oder gelöscht Microsoft Outlook.
Wie muss ich das einbauen?
Hier der Einbau in den zuletzt von Sepp verbesserten Code, wie es nicht funktioniert:


Sub PrintMailPDF()
Dim objOLOutlook As Object
Dim objOLMail As Object
Dim lngMailNr As Long
Dim lngZaehler As Long
On Error GoTo ErrorHandler
Set objOLOutlook = CreateObject("Outlook.Application")
lngMailNr = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
For lngZaehler = 2 To lngMailNr
If Cells(lngZaehler, 2) <> "" Then
With Sheets("Verarbeitung")
.Range("d1") = lngZaehler
.Calculate
.ExportAsFixedFormat xlTypePDF, Sheets("Daten").Cells(lngZaehler, 2).Text
.PrintOut
Sleep 500
End With
Set objOLMail = objOLOutlook.CreateItem(olMailItem)
With Sheets("Mail")
With objOLMail
.To = Cells(lngZaehler, 1)
.CC = "testmai@makro.de"
.Subject = Cells(lngZaehler, 2) & " - " & Cells(lngZaehler, 4)
.BodyFormat = olFormatPlain
.Body = "Hallo " & Cells(lngZaehler, 3) & "," & vbCrLf
Dim strAttachmentPfad1 As String
strAttachmentPfad1 = ActiveSheet.Cells(lngZaehler, 6)
.Attachments.Add strAttachmentPfad1
Set .SendUsingAccount = .Session.Accounts.Item("info@domain.de")
.Send
'.Display
End With
End With
Sleep 500
Set objOLMail = Nothing
End If
Next lngZaehler
Set objOLOutlook = Nothing
Exit Sub
ErrorHandler:
MsgBox Err.Number & " " & Err.Description & " " & Err.Source, vbInformation
Exit Sub
End Sub

Viele Grüße
Frank

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Du musst bei...
07.09.2018 07:40:17
Case
Hallo Frank, :-)
... ".SendUsingAccount = .Session.Accounts.Item("info@domain.de")" den Namen des Kontos (wie in Outlook angezeigt) in Hochkommata eintragen - nicht die Mailadresse. Dann sollte es eigentlich klappen. ;-)
Servus
Case

AW: Du musst bei...
07.09.2018 08:52:11
Frank
Hallo Case,
ich verwende in Outlook die Mailadresse auch als Kontoname. Gehe ich in OL (2016) auf Kontoeinstellungen, Tab E-Mail wird in den POP-Kontoeinstellungen bei Kontoname auch diese Mailaderesse angezeigt. Auf deinen Hinweis habe ich nun dem Konto einfach einen anderen Namen gegeben... und siehe da, es klappt! Vielen Dank!
Dafür habe ich nun aber ein viel schwerwiegenderes Problem mit dem Code: Ich habe ihn identisch aus der Testdatei (xlsm) in die eigentliche Arbeitsdatei (xlsb) kopiert. Dort erhalte ich nun die Fehlermeldung "Fehler beim Kompilieren: Variable nicht definiert". Hast du noch eine Idee, woran das liegen könnte?
Viele Grüße
Frank
Anzeige
Entweder Du setzt einen...
07.09.2018 09:11:39
Case
Hallo Frank, :-)
... Verweis auf die Outlookbibliothek, oder Du schreibst: ;-)
Set objOLMail = objOLOutlook.CreateItem(0)
Und:
.BodyFormat = 1
Du arbeitest mit "Late Binding" - da sind die Konstanten nicht bekannt. ;-)
Servus
Case

AW: Entweder Du setzt einen...
07.09.2018 10:35:31
Frank
Hallo Case,
es bleibt mir ein Rätsel, warum der identische VBA-Code in der einen Datei funktioniert und in der anderen bei der Zeile
Set objOLMail = objOLOutlook.CreateItem(olMailItem)
die genannte Fehlermeldung herausgibt. Der Code täuscht sicherlich auch bezüglich meines VBA-Niveaus: Alles relevante ist gefunden und mit Hilfe freundlicher Helfer wie dir modifiziert. Aber wie dem auch sei, mit deinem Tipp funktioniert es nun. Herzlichen Dank!
Jetzt habe ich den Code noch einmal "entschlackt" und auf die aktuelle Datei angepasst. Wenn du noch Lust hast, könntest du noch schauen, ob das so "stabil" aussieht:
Sub PrintMailPDF_neuRG()
Dim objOLOutlook As Object 'Steht für die Anwendung Outlook
Dim objOLMail As Object 'Steht für die einzelnen E-Mails
On Error GoTo ErrorHandler
Set objOLOutlook = CreateObject("Outlook.Application")
With Sheets("Rg")
.ExportAsFixedFormat xlTypePDF, .Cells(16, 13).Text
.PrintOut
Sleep 500
End With
Set objOLMail = objOLOutlook.CreateItem(0)
With Sheets("Rg")
With objOLMail
.To = Cells(16, 8).Text 'Empfänger AN
.CC = "testmai@makro.de" 'Empfänger CC
.BCC = ""
.Subject = Cells(16, 10) & " - " & Cells(16, 11) 'Betreff
.BodyFormat = 1
.Body = "Hallo " & Cells(16, 14).Text & "," & vbCrLf & _
Cells(16, 11).Value & " ist die Zahl des Tages." & vbCrLf
Dim strAttachmentPfad1 As String
strAttachmentPfad1 = ActiveSheet.Cells(16, 13)
.Attachments.Add strAttachmentPfad1 'Die Anhänge
Set .SendUsingAccount = .Session.Accounts.Item("Info")
.Send 'Versand der Mail
End With
End With
Sleep 500
Set objOLMail = Nothing 'E-Mail-Objekt wird beendet
Set objOLOutlook = Nothing 'Anwendung Outlook beendet
Exit Sub
ErrorHandler:
MsgBox Err.Number & " " & Err.Description & " " & Err.Source, _
vbInformation, "Ein Fehler ist aufgetreten, aber Fabi ist nicht schuld! =)"
Exit Sub
End Sub
Viele Grüße
Frank
Anzeige
Das muss kein Rätsel...
08.09.2018 03:34:04
Case
Hallo Frank, :-)
... bleiben. In einer Datei hast du einen Verweis auf die Bibliothek von Outlook. In der anderen Datei nicht. Nimm einfach mal eine Suchmaschine deiner Wahl und schau nach "Late Binding" und "Early Binding" die frühe und späte Bindung - und schon ist es kein Geheimnis mehr.
Servus
Case

AW: Das muss kein Rätsel...
10.09.2018 09:27:26
Frank
Hallo Case,
vielen Dank für deinen Hinweis. Jetzt suche ich noch einen Weg, die Mail mit meiner Standard-HTML Mailvorlage herauszuschicken. Wenn ich in Outlook unter "Start" auf "Neue Elemente", "E-Mail-Nachricht mit" gehe und dort HTML auswähle, wird die Standardvorlage geöffnet und damit versandt. Kann ich diese Vorlage auch per VBA ansprechen?
Viele Grüße
Frank

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge