Automatischer Versand von PDF aus einem Dateiordner
Hallo allerseits,
ich Programmmiere VBA für Access und muss nun VBA für Outlook programmieren. Letzteres leider zum ersten Mal und benötige etwas Hilfe.
In einem Verzeichnis liegen jeweils zwei zusammegehörende Dateipaare. Z. B. Rechnung_1234.pfd und Rechnung_1234.otl. Zuerst genannte Datei soll aus einem Outlookmakro (2003 und höher) automatisch an eine neu zu erstellende E-Mail angehängt und verschickt werden. Dieses Makro gilt es zu Erstellen.
In der Rechnung_1234.otl finden sich durch '~' getrennt, E-Mailempfänger, Betreff und der E-Mailtext.
Nach dem Versand können beide Dateien gelöscht werden und es soll das nächste Dateiepärchen ausgelesen und versendet werden, bis alle Dateipaare abgearbeitet, d. h. alle PDF-Dateien an die entsprechenden Emailempfänger versendet wurden.
Kann mir jemand einen groben Plan geben, wie ich das anstelle?
Vielen Dank im voraus und viele Grüße
Axel
ich Programmmiere VBA für Access und muss nun VBA für Outlook programmieren. Letzteres leider zum ersten Mal und benötige etwas Hilfe.
In einem Verzeichnis liegen jeweils zwei zusammegehörende Dateipaare. Z. B. Rechnung_1234.pfd und Rechnung_1234.otl. Zuerst genannte Datei soll aus einem Outlookmakro (2003 und höher) automatisch an eine neu zu erstellende E-Mail angehängt und verschickt werden. Dieses Makro gilt es zu Erstellen.
In der Rechnung_1234.otl finden sich durch '~' getrennt, E-Mailempfänger, Betreff und der E-Mailtext.
Nach dem Versand können beide Dateien gelöscht werden und es soll das nächste Dateiepärchen ausgelesen und versendet werden, bis alle Dateipaare abgearbeitet, d. h. alle PDF-Dateien an die entsprechenden Emailempfänger versendet wurden.
Kann mir jemand einen groben Plan geben, wie ich das anstelle?
Vielen Dank im voraus und viele Grüße
Axel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 180107
Url: https://administrator.de/forum/automatischer-versand-von-pdf-aus-einem-dateiordner-180107.html
Ausgedruckt am: 27.04.2025 um 17:04 Uhr
9 Kommentare
Neuester Kommentar
Hallo,
Warum? Den groben Plan hast du doch selbst schon erstellt. Steht doch oben drin. Wenn du gezielt Probleme hast frage (evtl. mit zugeöhrigem Quellcodeschnippsel) und dir wird bestimmt geholfen.
Gruß,
Peter
Warum? Den groben Plan hast du doch selbst schon erstellt. Steht doch oben drin. Wenn du gezielt Probleme hast frage (evtl. mit zugeöhrigem Quellcodeschnippsel) und dir wird bestimmt geholfen.
Gruß,
Peter
Hallo,
Das ist doch kein problem
Gruß,
Peter
Das ist doch kein problem
weiß ich nicht, wie ich eine neue E-Mail anlege, d. h. wie ich die Felder Empfänger, Betreff, E-Mailtext anspreche und wie ich die entsprechende PDF-Datei anhänge und verschicke.
Im VBA Editor mal die F1 benutzt? Oder mal hier geschaut http://support.microsoft.com/kb/161088 Weiterhin gibt es noch Lektüre in Buchform. Sogar MS selbst hat da einiges.an Hilfe anzubieten http://msdn.microsoft.com/en-us/library/ee814736.aspxGruß,
Peter
Hallo,
Setze den Code doch bitte in code tags. Siehe dazu die Formatierungshilfe!
Beispiel:
Das kann dan wenigstens besser gelesen werden.
Gruß,
Peter
Setze den Code doch bitte in code tags. Siehe dazu die Formatierungshilfe!
Beispiel:
If AnzMail = 0 Then
MsgBox "Es wurden keine Dateien zur E-Mailversendung gefunden! ", vbInformation, "Hinweis"
Else
MsgBox "Fertig. Es wurden " & AnzMail & " E-Mails versendet. ", vbInformation, "Hinweis"
End If
Die Routine wird einmal durchlaufen, jedoch wird keine Email erzeug und versendet
Haltepunkte und Variablen lässt du dir schon beim anzeigen, oder? Und was ist bei einzelschritt abarbeitung?Beim 2. Druchlauf tritt Fehler 91 auf.
Da du dein Office nicht nennst noch auf welchem OS du das ganze machst, hilft vielleicht dies hier (Das ist in Access aber nicht anders und dort der gleiche Fehler inklusive des dazu gehörigen fehlertexts) http://support.microsoft.com/kb/146864Vielleicht siehst Du was hier falsch läuft?
Äh, nein. Ich zähle noch deine ganzen If else then's auseinander. Hast du schonb mal was von Strukturierter Programmierung oder Einrücken gehört? Das kann doch keiner lesen.Gruß,
Peter
Hallo,
Deshalb gibt es ja auch die Code Tags. Schau mal in der Formatierungshilfe ren. Code Tags kannst du auch nachträglich noch hinzufügen.
Gruß,
Peter
Deshalb gibt es ja auch die Code Tags. Schau mal in der Formatierungshilfe ren. Code Tags kannst du auch nachträglich noch hinzufügen.
Gruß,
Peter
Hallo,
Die Mail wird doch mit deinem Code unten erzeugt. Zum senden noch ein .Send hinzufügen. Siehe unten
Anstelle von Sprungmarken (brrr) lieber Schleifen mit Bedingungen benutzen. Ist in deinem Code ganz leicht möglich.
Ist ein NoGo. Sowie das dazugehörige
Löschen. Und dazu noch innerhalb einer IF Anweisung!
Nutze lieber ein Do ... Loop
<code "type=plain">
Do...Loop-Anweisung
Wiederholt einen Block mit Anweisungen, solange eine Bedingung den Wert True hat oder bis eine Bedingung den Wert True erhält.
Syntax
Do [{While | Until} Bedingung]
[Anweisungen]
[Exit Do]
[Anweisungen]
Loop
Sie können auch die folgende, ebenfalls zulässige Syntax verwenden:
Do
[Anweisungen]
[Exit Do]
[Anweisungen]
Loop [{While | Until} Bedingung]
Die Syntax für die Do Loop-Anweisung besteht aus folgenden Teilen:
Teil Beschreibung
Bedingung Optional. Numerischer Ausdruck oder Zeichenfolgenausdruck, der entweder True oder False ergibt. Hat Bedingung den Wert Null, so wird Bedingung als False interpretiert.
Anweisungen Eine oder mehrere Anweisungen, die wiederholt werden, solange oder bis Bedingung True wird.
Bemerkungen
Innerhalb einer Do…Loop-Anweisung kann eine beliebige Anzahl von Exit Do-Anweisungen an beliebiger Stelle als Alternative zum Verlassen einer Do…Loop-Anweisung verwendet werden. Exit Do wird oft in Zusammenhang mit der Auswertung einer Bedingung (zum Beispiel If...Then) eingesetzt und hat zur Folge, daß die Ausführung mit der ersten Anweisung im Anschluß an Loop fortgesetzt wird.
In verschachtelten Do...Loop-Anweisungen übergibt Exit Do die Steuerung an die Schleife der nächsthöheren Verschachtelungsebene.
Gruß,
Peter
Die Mail wird doch mit deinem Code unten erzeugt. Zum senden noch ein .Send hinzufügen. Siehe unten
objMail.To = EMail(1)
objMail.Subject = EMail(2)
objMail.Body = EMail(3)
myattachments.Add strFolder & Left(Vergleichsmuster, Len(Vergleichsmuster) - 3) & "pdf"
objMail.Send
Beim 2. Druchlauf tritt Fehler 91 auf
Klar. Du setzt ja deine Objeckte auf Nothing. Entweder lassen oder neu zuweisen. Set olApp = Nothing
Set olInspector = Nothing
Set objMail = Nothing
GoTo NeueDatei
NeueDatei:
Nutze lieber ein Do ... Loop
<code "type=plain">
Do...Loop-Anweisung
Wiederholt einen Block mit Anweisungen, solange eine Bedingung den Wert True hat oder bis eine Bedingung den Wert True erhält.
Syntax
Do [{While | Until} Bedingung]
[Anweisungen]
[Exit Do]
[Anweisungen]
Loop
Sie können auch die folgende, ebenfalls zulässige Syntax verwenden:
Do
[Anweisungen]
[Exit Do]
[Anweisungen]
Loop [{While | Until} Bedingung]
Die Syntax für die Do Loop-Anweisung besteht aus folgenden Teilen:
Teil Beschreibung
Bedingung Optional. Numerischer Ausdruck oder Zeichenfolgenausdruck, der entweder True oder False ergibt. Hat Bedingung den Wert Null, so wird Bedingung als False interpretiert.
Anweisungen Eine oder mehrere Anweisungen, die wiederholt werden, solange oder bis Bedingung True wird.
Bemerkungen
Innerhalb einer Do…Loop-Anweisung kann eine beliebige Anzahl von Exit Do-Anweisungen an beliebiger Stelle als Alternative zum Verlassen einer Do…Loop-Anweisung verwendet werden. Exit Do wird oft in Zusammenhang mit der Auswertung einer Bedingung (zum Beispiel If...Then) eingesetzt und hat zur Folge, daß die Ausführung mit der ersten Anweisung im Anschluß an Loop fortgesetzt wird.
In verschachtelten Do...Loop-Anweisungen übergibt Exit Do die Steuerung an die Schleife der nächsthöheren Verschachtelungsebene.
Gruß,
Peter