856 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen ich habe folgende Programmierung eines Makros
gemacht. Ziel ist es die Tabellenblätter Montag - Freitag im PDF
Format per EMail versenden soll und die erzeugte PDF-Datei aber
gelöscht werden soll. Ich finde den Fehler allerdings leider nicht.

Könnt Ihr mir helfen?

Vielen Dank im Vorfeld.



Sub SendeMail()

Dim arrBlätter() As String
Dim sPdfDateiF5 As String
Dim OutApp As Object
Dim OutMail As Object

If MsgBox("Möchten Sie die Anforderung abschicken?", 4, "Frage") =
vbYes Then

' speichern unter als PDF:
sPdfDateiF5 = "C:\KFZ-Anforderung.PDF"

' speichert das aktuelle Blatt (=ActiveSheet) als PDF

ReDim arrBlätter(1 To 5)
arrBlätter(1) = "Montag"
arrBlätter(2) = "Dienstag"
arrBlätter(3) = "Mittwoch"
arrBlätter(4) = "Donnerstag"
arrBlätter(5) = "Freitag"

'Falls eine Vergrößerung zB. auf 5 Elemente notwendig ist,
'ohne dabei die bisherigen Elementinhalte zu verlieren:
ReDim Preserve arrBlätter(1 To 5)

arrBlätter(5) = "Freitag"

Sheets(arrBlätter).Select
Sheets(arrBlätter(1)).Activate
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=sPdfDateiF5, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

' Outlook starten

Set appOutlook = CreateObject("Outlook.Application")

' neue Email erstellen

Set MailItem = appOutlook.CreateItem(olMailITem)


' Werte den Eigenschaften zuweisen...
OutMail.To = "name@provider.de" 'richtige Email-Adresse angeben
OutMail.CC = ""
OutMail.BCC = ""
OutMail.Subject = "KFZ-Anforderung"
OutMail.Body = ""

' Anhang hinzufügen:
OutMail.Attachments.Add sPdfDateiF5

' ...und abschicken
OutMail.Send

' Objekte sauber auflösen
Set OutMail = Nothing
Set OutApp = Nothing
End If
End Sub



6 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

probier es mal so:
Sub SendeMail()

Dim sPdfDateiF5 As String
Dim OutMail As Object
Dim arrBlätter
Dim Antwort

Antwort = MsgBox("Möchten Sie die Anforderung abschicken?", 4, "Frage")

If Antwort = vbYes Then

' speichern unter als PDF:
sPdfDateiF5 = "C:\KFZ-Anforderung.PDF"

' speichert Blätter Montag bis Freitag als eine PDF

arrBlätter = Array("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag")

Worksheets(arrBlätter).Select
Worksheets(arrBlätter(0)).ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=sPdfDateiF5, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False


' Outlook starten
Set OutMail = CreateObject("Outlook.Application")

' neue Email erstellen
With OutMail.CreateItem(0)
' Werte den Eigenschaften zuweisen...
.To = "name@provider.de" 'richtige Email-Adresse angeben
.CC = ""
.BCC = ""
.Subject = "KFZ-Anforderung"
.Body = ""

' Anhang hinzufügen:
.Attachments.Add sPdfDateiF5
' ...und abschicken
.Send
End With

' Objekte sauber auflösen
Set OutMail = Nothing

'PDF-Datei wieder löschen
Kill sPdfDateiF5

End If

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

noch ein Nachtrag: Damit das Erstellen und Versenden der E-Mail klappt, muss im VBA-Editor unter Extras - Verweise bei Microsoft Outlook XX.0 Object Library ein Haken gesetzt werden (XX steht hier für die Zahl der Office Version).

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,

vielen lieben Dank für deinen Beitrag.

Ich habe alles ausprobiert. Den entsprechenden Haken gesetzt nun kommt eine
Fehlermeldung 400.

Leider verzweifel ich gerade daran woran es liegen kann. Ich habe deinen Code
exakt kopiert und irgenwie geht es trotzdem nicht.

Habt Ihr eine Idee?

Grüße und Danke
Czerno
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Czerno,

in welcher Zeile wird denn der Fehler angezeigt?
Hast du den Code auch in ein Standard-Modul deiner Arbeitsmappe kopiert?

Gruß

M.O.
0 Punkte
Beantwortet von


Hallo Czerno,

in welcher Zeile wird denn der Fehler angezeigt?
Hast du den Code auch in ein Standard-Modul deiner Arbeitsmappe kopiert?

Gruß

M.O.


Hallo M.O.,

mist das war ein Fehler. Ich habe es nicht als Modul sondern in der Arbeitsmappe programmiert. Dann kann es ja nicht funktionieren.

Nun habe ich eine neue Fehlermeldung:

Laufzeitfehler '1004':

Das Dokument wurde nicht gespeichert. Das Dokument ist möglicherweise geöffnet, oder beim Speichern ist ein Fehler aufgetreten.


Klicke ich auf Debuggen wird folgender Code gelb markiert:


Worksheets(arrBlätter(0)).ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=sPdfDateiF5, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False


Vielen Dank für deine Antwort im Vorfeld.

Grüße
Czerno
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Czerno,

du hast als Verzeichnis zum Speichern den Pfad C:\ eingegeben. Versuche mal eine Datei auf C zu speichern. Wahrscheinlich kommt die Fehlermeldung, dass du keine Berechtigung zum Speichern auf C hast.

Lege also ein Verzeichnis auf C an, z.B. PDF, ändere die Pfadangabe im Makro entsprechend ( sPdfDateiF5 = "C:\PDF\KFZ-Anforderung.PDF") und versuche es noch einmal.

Gruß

M.O.
...