Prost Neujahr,
das Jahr ist noch nicht so alt und ich muss Euch schon ne Frage stellen. Ist es möglich, den Inhalt eines Feldes als Dateiname zu verwenden? Zur näheren Erklärung: Ich habe in Meiner Datenbank über Autos einen Bericht erstellt mit dem Namen "Datenblatt". In diesem Bericht gibt es ein Feld das ich gerne als Dateiname verwenden möchte, wenn ich den Bericht als PDF speichere. Ist es möglich, dass dieser Feldinhalt automatisch als Dateiname übernommen wird?
Vielen Dank im Voraus für Eure Antworten.
Hallo,
natürlich geht das, Du musst nur auch das Feld verweisen.
Zeige mal den Code zum Speichern des PDF.
Hallo,
Ich habe in einem Formular eine Schaltfläche, mit der ich folgenden Code auslöse:
Private Sub druckpdf_Click()
Dim BerichtsName As String
Dim Filter As String
BerichtsName = "Datenblatt"
Filter = "[Datensatz] = " & Me![Datensatz]
DoCmd.OpenReport BerichtsName, acPreview, , Filter
DoCmd.PrintOut acPrintAll
DoCmd.Close acReport, BerichtsName
End Sub
Vielen Dank schon mal für Deine Unterstützung.
Hallo,
probier mal:
ZitatPrivate Sub druckpdf_Click()
Dim BerichtsName As String
Dim Filter As String
BerichtsName = "Datenblatt"
Filter = "[Datensatz] = " & Me![Datensatz]
DoCmd.OpenReport BerichtsName, acPreview, , Filter
Reports(BerichtsName).Caption = Me!Dateiname
DoCmd.PrintOut acPrintAll
DoCmd.Close acReport, BerichtsName
End Sub
Hallo,
Zitat von: MzKlMu am Januar 02, 2014, 18:27:21
... Zeige mal den Code zum Speichern des PDF.
Der Code, den du da reingestellt hast speichert aber nix, der öffnet einen Bericht zum Drucken, das hat mit einer Speicherung als PDF nichts am Hut.
Hi,
seltsamerweise macht mir Access daraus immer ein PDF. Aber seit ich den Code so umgestellt habe, DF6GL vorgeschlagen hat, geht das nicht mehr...
Hallo,
[size=10pt]
Private Sub druckpdf_Click()
Dim BerichtsName As String
Dim Filter As String
BerichtsName = "Datenblatt"
Filter = "[Datensatz] = " & Me![Datensatz]
DoCmd.OpenReport BerichtsName, acPreview, , Filter
DoCmd.PrintOut acPrintAll
DoCmd.Close acReport, BerichtsName
End Sub
[/size]
Tut leid, aber der Code öffnet einen Bericht mit gefilterten Daten - der Zusatz von Franz ändert die Beschriftung - druckt alle Datensätze und schließt danach den Bericht.
Von Speichern als PDF keine Spur ::)
Hallo,
Zitatseltsamerweise macht mir Access daraus immer ein PDF.
dann ist als Drucker eine PDF Drucker eingestellt, da ist nichts seltsam dran.
Welche Access Version verwendest Du ?
Als Standarddrucker ist NICHT der PDF-Drucker eingestellt. Ich verwende Access 2007.
Hallo,
nicht als Standarddrucker sondern für diesen Bericht
Allerdings nimmt der Druckertreiber doch standardmäßig den Dateinamen - in dem Fall den Berichtsnamen - in den Speichern unter - Dialog auf oder täusche ich mich da?
Ja, der Berichtsname wird standardmäßig als Dateiname verwendet. Ich möchte aber den Inhalt eines bestimmten Feldes automatisch als Dateinamen verwenden.
Wie müsste ich den Code denn ändern, um eine PDF zu erzeugen. Ich verwende dazu das Programm Free PDF. Wie spreche ich das Programm im Code an und lasse es als Dateinamen den Feldinhalt von Feld xy verwenden?
Hallo,
bei Access 2007 brauchst du keinen speziellen PDF-Drucker mehr, Access 2010 hat die Speicherung von Berichten in unterschiedlichen Ausgabeformaten bereits als Bordmittel mit bzw. für 2007 gibt's ein AddIn ... hier zu beziehen:
http://www.microsoft.com/de-de/download/details.aspx?id=9943 (http://www.microsoft.com/de-de/download/details.aspx?id=9943)
schau mal in der OH unter 'DoCmd.OutputTo'
Bei Acc 2010 schaut das so aus, für 2007 müsste es ähnlich sein.
DoCmd.OutputTo(ObjectType, ObjectName, OutputFormat, OutputFile, AutoStart, TemplateFile, Encoding)
für OutputFormat müsste dann 'acFormatPDF' stehen und für OutputFile der gewünschte Dateiname, der auch in einer String-Variablen verpackt sein kann (glaube ich).
Hallo,
ZitatWie spreche ich das Programm im Code an und lasse es als Dateinamen den Feldinhalt von Feld xy verwenden?
das hat doch Franz bereits geschrieben:
Reports(BerichtsName).Caption = Me!FeldXY 'Formularfeld mit DateinameAber verwende den Vorschlag von Peter, daher auch meine Frage nach der Accessversion.
Hallo,
wenn du oben erwähntes AddIn installiert hast, sollte es mit Acc2007 so laufen:
[size=10pt]Private Sub druckpdf_Click()
Dim BerichtsName As String
Dim Filter As String, Pfad As String, Dateiname As String
Pfad = "C:\DeinVerzeichnis\"
Dateiname = Pfad & Me!DeinTextfeldMitDateinamen & ".PDF"
BerichtsName = "Datenblatt"
Filter = "[Datensatz] = " & Me![Datensatz]
DoCmd.OpenReport BerichtsName, acPreview, , Filter
Reports(BerichtsName).Caption = Me!DeinTextfeldMitDateinamen
[color=green]'Bericht ausdrucken
[/color] DoCmd.PrintOut acPrintAll
[color=green]'Bericht als PDF ablegen
[/color] DoCmd.OutputTo acOutputReport, BerichtsName, "PDF", Dateiname
DoCmd.Close acReport, BerichtsName
End Sub
[/size]
HTH
Ich hab das Addin installiert und den Code auf deinen Vorschalg abgeändert. Access will aber immer noch den normalen Drucker ansprechen...
Hallo,
Du musst in der Seiteneinrichtung den "Speziellen Drucker" einstellen. Dazu gibt es einen Menüpunkt. Kann ich Dir nicht genauer beschreiben, da ich kein A2007 habe.
Hallo,
Für outputto:
1)wie heißt denn der Code nun aktuell?
2)steht im Berichtsentwurf unter Seite einrichten/Seite ein Haken bei Standard-Drucker?
für PrintOut:
1) im Berichtsentwurf unter Seite einrichten/Seite einen Haken bei "Spezieller Drucker" setzen und den FreePDF-Drucker angeben.
Hallo,
Zitat
Ich hab das Addin installiert und den Code auf deinen Vorschalg abgeändert. Access will aber immer noch den normalen Drucker ansprechen...
Ja sicher, die Methode zum AUSDRUCKEN habe ich im Codebeispiel ja nicht entfernt - aber kommentiert.
setze vor diese Zeile ein Hochkomma, dann wird nicht auf dem Standarddrucker ausgedruckt.
DoCmd.PrintOut acPrintAll
DoCmd.OutputTo verwendet keinen Drucker
Also momentan sieht der Code so aus:
Private Sub druckpdf_Click()
Dim BerichtsName As String
Dim Filter As String, Pfad As String, Dateiname As String
Pfad = "[pfad]"
Dateiname = Pfad & Me![Bericht] & ".PDF"
BerichtsName = "Datenblatt"
Filter = "[Datensatz] = " & Me![Datensatz]
DoCmd.OpenReport BerichtsName, acPreview, , Filter
Reports(BerichtsName).Caption = Me![Bericht]
'Bericht ausdrucken
DoCmd.PrintOut acPrintAll
DoCmd.Close acReport, BerichtsName
End Sub
Das Häkchen ist bei "spezieller Drucker" gesetzt. Ich habe es mit und ohne dem von Peter erwähnten Hochkomma versucht. Ich habe auch mein Free-PDF und den Adobe PDF Drucker versucht. beides funktioniert leider nicht. Was mache ich denn falsch?
Hallo,
du hast das AddIn installiert - JA
du hast meinen Codevorschlag ausprobiert - NEIN ;)
In dem von dir im letzten Posting gezeigten Code fehlt die Ausgabe als PDF!
ich stelle daher den passenden (hoffe ich zumindest) Code nochmals rein:
[size=10pt]
Private Sub druckpdf_Click()
Dim BerichtsName As String
Dim Filter As String, Pfad As String, Dateiname As String
Pfad = [pfad]
Dateiname = Pfad & Me!Bericht & ".PDF"
BerichtsName = "Datenblatt"
Filter = "[Datensatz] = " & Me![Datensatz]
DoCmd.OpenReport BerichtsName, acPreview, , Filter
Reports(BerichtsName).Caption = Me!Bericht
'Bericht ausdrucken Hochkomma beim nachfolgenden Befehl entfernen
'DoCmd.PrintOut acPrintAll
'Bericht als PDF ablegen
DoCmd.OutputTo acOutputReport, BerichtsName, "PDF", Dateiname
DoCmd.Close acReport, BerichtsName
End Sub
[/size]
KOPIERE nun den ganzen Code, so wie er ist ins Klick-Ereignis deines Button (klick oben auf '[Auswählen]').
Es sollte nun KEIN Ausdruck erfolgen aber die Ablage des Berichts unter dem angegebenen Dateinamen
im angegebenen Verzeichnis sollte funktionieren.
Steht der Speicherpfad ebenfalls in einem Formularfeld, dann ändere diese Zeile auf...
Pfad = Me![pfad]
Und beachte bitte unbedingt, dass die Pfadangabe in der Form erfolgen MUSS X:\Verzeichnis\
Genau so funktioniert der Code. Den Pfad habe ich auch in einem Feld und habe die entsprechende Zeile geändert. Klappt einwandfrei.
VIELEN DANK AN ALLE
Na also ... ::) :D
Dann kann ich mich wieder dem Bergisel-Springen widmen :D 8)