Access: Ausgabe als PDF

Liebe Wissende,

ich lasse automatisch bislang eine Excel-Datei erstellen und versende sie per Mail. Das ganze lasse ich ca. 150x durchlaufen (verschiedene Dienstpläne). Der Code ist wie folgt:

Function Afo(Fmonat As Long, FJahr As Long)
Dim db1 As Database
Dim DSG1 As Recordset, DSG2 As Recordset, output As String, uhu As String
Dim xlApp As Object

Set db1 = CurrentDb()

Set DSG1 = db1.OpenRecordset(„VA_afozettel“, DB_OPEN_DYNASET) ’ Dynaset erstellen."
DSG1.Filter = „Ausdr1 =“ + CStr(FJahr) + " and Ausdr2=" + CStr(Fmonat)

Set DSG2 = DSG1.OpenRecordset

If (DSG2.BOF) Then GoTo norec
Set xlApp = CreateObject(„Excel.Application“)

output = InputBox(„Name des Anforderungs-Files“, „Anforderungszettel“, „u:\afo“ + CStr(FJahr) + „_“ + Format(CStr(Fmonat), „00“) + „.xls“)
FileFormat:=xlExcel8 _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False

uhu = fuellexcel(" ", " ", " ", " ", " ", DSG2, False, output, False, xlApp, Fmonat, FJahr)
xlApp.Quit

norec:

End Function

Ich würde gerne jedoch diese Datei nicht im Excel-Format, sondern als PDF erzeugen lassen, da wir die neueste Excel-Version besitzen und die Empfänger diese in den wenigsten Fällen bereits besitzen. Ich lasse zwar die Datei bereits im 97-2003er Format ausgeben, dennoch bleibt sie unleserlich für die Empfänger.

Kann mir jemand diese Funktion für eine PDF-Ausgabe umschreiben?

Herzlichsten Dank!

MfG,

fshbb

Moin moin,

uhu = fuellexcel(" ", " ", " ", " ", " ", DSG2, False, output,
False, xlApp, Fmonat, FJahr)

die funktion fuellexcel ist die standard ?

aber egal . technisch kannst du die erzeugte excel (201x) ja als pdf exportieren.

 ActiveCell.FormulaR1C1 = "sdfsf"
 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= \_
 "D:\test\_loeschen.pdf", Quality:= \_
 xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, \_
 OpenAfterPublish:=False

Moin Moin,

ich lasse automatisch bislang eine Excel-Datei erstellen und
versende sie per Mail.

du sendest 150 Dateien per Email an unterschiedliche Empfänger?

Das ganze lasse ich ca. 150x durchlaufen (verschiedene Dienstpläne).

ok, mit Access 2007/2010 kannst du das in einem Rutsch erledigen.
Welche Access Version hast/nutzt du?

  • Basis-Bericht erzeugen
  • Bericht mit Parametern aufrufen
  • Bericht als PDF speichern
  • PDF-Datei mailen
  • erzeugte PDF-Datei wieder löschen (falls gewünscht)
  • eine Excel-Datei ist nicht notwendig!

da wir die neueste Excel-Version besitzen

also Excel 2010?

und die Empfänger diese in den wenigsten Fällen bereits besitzen.

logisch, dafür gibt es ja das Compatibility-Pack von M$ kostenlos zum runter laden und installieren.
http://www.microsoft.com/downloads/de-de/details.asp…

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo Netwolf,
hallo Thomas,

erst einmal vielen Dank, dass Ihr Euch meines Problems angenommen habt. Ich kann eigentlich überhaupt nicht programmieren, aber abgucken klappt ganz prima. Dementsprechend kann ich stets mit Internet und einem Quentchen eigenem Verstand mir so einiges zusammenbasteln, aber wenn’s nicht klappt, wird’s echt übel. Was mir hilft, sind also leider nicht die grundsätzliche Beschreibung einer Vorgehensweise, auch wenn mein logischer Verstand sie nachvollziehen kann, sondern möglichst viel konkrete Praxis…

Ich habe, lieber Thomas, Deinen Text an mehreren Stellen einzusetzen versucht… welche wäre denn die richtige?

Ich habe auch noch folgende, spätere Stelle gefunden:

Set xlApp = CreateObject(„Excel.Application“)
If (mailen) Then
outstart = InputBox(„Startname der Files ohne .xls!!!“, „Einsatzplan“, „u:\temp\dienstplan“ + CStr(FJahr) + „_“ + Format(CStr(Fmonat), „00“) + „_“)
Else
outstart = InputBox(„Startname der Files ohne .xls!!!“, „Einsatzplan“, „u:\temp\dienstplan_brief“ + CStr(FJahr) + „_“ + Format(CStr(Fmonat), „00“) + „_“)
End If

PERS.MoveFirst
Do 'Schleife durchlaufen, solange passende Datensätze vorhanden sind

DSG1.Filter = „personalnr =’“ + PERS!Personalnummer + „’“
‚DSG1.Filter = „Ausdr1 =“ + CStr(FJahr) + " and Ausdr2=" + CStr(Fmonat) + " and personalnr =‘" + PERS!Personalnummer + „’“

Set DSG2 = DSG1.OpenRecordset

If (DSG2.BOF) Then GoTo norec

output = outstart + CStr(PERS!Personalnummer) + „.xls“
wer = Nz(PERS!Anrede, „Frau“) + " " + Nz(PERS!Vorname, " ") + " " + Nz(PERS!Nachname, " ")
strasse = Nz(PERS!strasse, " ")

Ort = Nz(PERS!LKZ, „D“) + „-“ + Nz(PERS!Postleitzahl, „76530“) + " " + Nz(PERS!Ort, „Baden-Baden“)
Lohn = Nz(PERS![StdLohn/AN], " ")
If (IsNull(PERS!EmailAdresse) Or Not mailen) Then
uhu = fuellexcel(wer, strasse, Ort, Lohn, " ", DSG2, True, output, False, xlApp, Fmonat, FJahr)
Else
uhu = fuellexcel(wer, strasse, Ort, Lohn, PERS!EmailAdresse, DSG2, True, output, True, xlApp, Fmonat, FJahr)
End If

Die Fallunterscheidung ist für zwei Möglichkeiten - den automatischen Versand per Mail (mailen = 1) oder als Datei zum Ausdrucken. Also, denke ich, unwichtig für mein Problem. Kann ich hier den Hebel „umstellen“ für eine Ausgabe als PDF?

Ansonsten: Ja, ich benutze Excel und Access 2010.

Ich danke ganz herzlich!