25.6k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich hoffe mir kann vielleicht jemand helfen.

Ich versuche gerade schon seit Tagen mir eine Excel Datei mit VBA aufzubauen und bin jetzt fast am Ende (aber nun scheitere ich)

:-(

Ich schreibe meine Rechnungen mit Excel und möchte das nur dieses Tabellenblatt unter PDF abgespeichert wird (Rechnungsnummer Feld F5 und Name A13)

Nun sollte die Datei z.B. in Ordner C:\Rechnungen gespeichert sein unter der Rechnungsnummer und dem Namen.

Nun sollte die Rechnung automatisch verschickt werden. Die e-Mail Adresse steht ein Tabellenblatt weiter unter Kunden. Wenn es einfacher wäre, könnte ich die e-Mail Adresse sonst auch in der Rechnung irgendwo "reinquetschen"

Hat vielleicht jemand eine Idee wie ich es machen kann ?


Ich habe hier 2 Codes die vielleicht jemand etwas anpassen kann.... ?

Dieser ist zum verschicken:

Sub Makro6()
'
' Makro6 Makro
'

'
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\RECHNUNGEN\Falsch.pdf", Quality:=xlQualityStandard _
, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
:=False
Application.Dialogs(xlDialogSendMail).Show
End Sub


allerdings speichert er dies ja jetzt noch als Excel ab und nicht als PDF.

Es soll nur das Tabellenblatt abgespeichert werden, wo das VBA ist.

Hier hatte ich noch einen Code zum speichern als PDF:

Sub Makro7()
'
' Makro7 Makro
'

'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\RECHNUNGEN\Falsch.pdf", Quality:=xlQualityStandard, IncludeDocProperties _
:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub


Aber er speichert es halt immer als "Falsch" und nicht unter der Rechnungsnummer und dem Namen.

Am besten wäre es natürlich wenn ich auch einen Text in der e-Mail beifügen kann. Also ein Feld auswählen wo ich einen Text reinschreibe und er dies in der Mail übernimmt.

DANKE IM VORAUS !!!! :o)

25 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

dein Problrem liegt hier

ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\RECHNUNGEN\Falsch.pdf", Quality:=xlQualityStandard _
, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
:=False
Application.Dialogs(xlDialogSendMail).Show
End Sub


Diese Angabe müsstest du ändern z.B. so

ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\RECHNUNGEN\" & A1, Quality:=xlQualityStandard _
, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
:=False
Application.Dialogs(xlDialogSendMail).Show
End Sub

wobei ich davon ausgehe, dass dein Rechnungsname in A1 steht, sonst wäre es entsprechen abzuändern

Gruß

Helmut
0 Punkte
Beantwortet von
Hallo,

danke für deine Schnelle Antwort.

Leider bekomme ich so aber einen Laufzeitfehler ???

Nun geht der Code nicht mehr ?

ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\RECHNUNGEN\" & A1, Quality:=xlQualityStandard _
, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
:=False
Application.Dialogs(xlDialogSendMail).Show
End Sub
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

da ich den Code nicht testen konnte, ist mir ein Fehler unterlaufen

ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\RECHNUNGEN\" & A1 & ", Quality:=xlQualityStandard _
, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
:=False
Application.Dialogs(xlDialogSendMail).Show
End Sub


Vesuch das mal.

Gruß

Helmut
0 Punkte
Beantwortet von
Hallo Helmut,

danke für deine schnelle Antwort.

Leider geht es aber immer noch nicht.... ???

Bekomme wieder einen Laufzeitfehler. :-(

Hatte mich schon so gefreut :o(

Hast du vielleicht noch eine Idee woran es liegt ?????
0 Punkte
Beantwortet von
liegt es vielleicht da dran das die PDF Endung diesmal nicht in der Formel mit einbezogen ist ?

Ich kenne mich da leider nicht wirklich mit aus :(
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

neuer Versuch

ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\RECHNUNGEN\" & A1 &".PDF ", Quality:=xlQualityStandard _
, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish

Gruß

Helmut
0 Punkte
Beantwortet von
Geht leider immer noch nicht :-(

Wenn ich den Code einfüge ist er sofort Rot....

Wenn ich es dann trotzdem Speicher kommen wieder nur Fehlermeldungen.
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo NRW,

in dem Code aus AW 6 von Helmut fehlte der Wert für die Eigenschaft "OpenAfterPublish". Die Zeile müsste richtig lauten:

ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="C:\RECHNUNGEN\" & A1 & ".PDF ", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False



MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von
Ich bin jetzt gerade so weit:

Dies ist mein erster Makro und der funktioniert auch so wie ich es mit vorgestellt habe (hatte da gestern noch was im Netz zu gefunden):

Sub Makro1()
'
' Makro1 Makro
'

'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\RECHNUNGEN\ " & Cells(6, 1).Value, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

End Sub


speichert das vorhandene Excelblatt als PDF Datei.

Aber nun soll das PDF Dokument auch verschickt werden....... ???? Das PDF Dokument heißt immer anders.... je nach dem was in dem Feld steht.

Sub Makro8()
'
' Makro8 Makro
' Speichern und verschicken PDF
'

'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\RECHNUNGEN\ " & Cells(6, 1).Value, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Application.Dialogs(xlDialogSendMail).Show

Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = Sheets("Tabelle1").Range("D16")
.CC = ""
.BCC = ""
.Subject = Sheets("Tabelle1").Range("D3")
.Body = Sheets("Tabelle1").Range("A3")
.Attachments.Add ActiveWorkbook.FullName
.Send
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub


Und jetzt klappt es hinten und vorne nicht.... Verschicken geht, aber er speichert den Dateianhang immer als Excel Datei und den vorhandenen Dateinamen.
Beim verschicken steht im Makro ja auch: Attachments.Add ActiveWorkbook.FullName was muss ich hinschreiben damit er den oberen Teil mit den PDF speichern nimmt ?

Bin für jeden Tipp Dankbar !!!!!!!
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Warum machst du nicht das naheliegenste? Beim speichern als PDF sagst du doch auch schon
Filename:="C:\RECHNUNGEN\" & A1 & ".PDF "

Also warum nicht auch beim hinzufügen als Attachment so?
.Attachments.Add "C:\RECHNUNGEN\ " & Cells(6, 1).Value
...