Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Betriebsanweisungen per VBA nach pdf exportieren und automatisch benennen

Begonnen von Palagrin85, Februar 21, 2023, 16:49:10

⏪ vorheriges - nächstes ⏩

Palagrin85

Hallo liebe Access-o-mania Gemeinde es geht mal wieder um Betriebsanweisungen,
Ich bin leider in VBA nicht so bewandert habe mich da aber mal belesen aber komme da nicht weiter.
Ich habe in einer Abfrage alle Daten aus den Tabellen gesammelt, und das ganze kann ich mir in einem Bericht ausgeben lassen, nun möchte ich das ganze per VBA dahingehend beschleunigen das ich die pdf.Datei automatisch benenne und direkt abspeichere.

Felder: MaschinenName; BANummer; Überprüfungstermin
Abfrage: qryBaMaschinenKomp
Bericht: rptBaMaschinen



Sub DruckeBerichtEinzelnAlsPDF()
    Dim rcsP As DAO.Recordset
   
    Set rcsP = CurrentDb.OpenRecordset("SELECT qryBaMaschinenKomp.BANummer FROM qryBaMaschinenKomp WHERE qryBaMaschinenKomp.BANummer Is Not Null;", dbOpenDynaset)

    Do Until rcsP.EOF
        DoCmd.OpenReport "rptBaMaschinen", acViewPreview, , "qryBaMaschinenKomp.BANummer = '" & rcsP.Fields("BANummer").Value & "'"
        DoCmd.OutputTo acOutputReport, "rptBaMaschinen", acFormatPDF, CurrentProject.Path & "\BA - " & rcsP.Fields("BANummer").Value & " - " & rcsP.Fields("MaschinenName").Value & " - Verwendbar bis: " & rcsP.Fields("Überprüfungstermin").Value
        DoCmd.Close acReport, "rptBaMaschinen"
        rcsP.MoveNext
    Loop
End Sub


Aktuell gibt er mir da den Laufzeitfehler 3265 aus und markiert die 2 Zeile DoCmd.OutputTo.

Vielleicht hat ja jemand von euch eine zündende Idee

Viele Grüße
Sebastian

Beaker s.a.

Hallo Sebastian,
Fehlernummern hat hier keiner im Kopf, zeige die zugehörige Meldung.
Hast du überprüft ob überhaupt ein gültiger Pfad/Dateiname zurück
gegeben wird?

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Palagrin85

Hallo Beaker
Ach so ja klar sorry sitze mal wieder im Wald und sehe den vor lauter Bäumen nicht...

Laufzeitfehler 3265
Element in der Auflistung nicht gefunden.

Aber beim Debug spuckt er mir alle so aus wie es sein soll als:
C:\Users\sthelen\Documents\Gefahrstoffmanagment\Betriebsanweisungen\BA - BM-DPS-039 - Betriebs und Lagerfläche - Verwendbar bis: 15.01.2024

Die schreibt er auch für alle 38 anderen Datensätze

Sub PfadDatei()
    Dim rcsP As DAO.Recordset
   
    Set rcsP = CurrentDb.OpenRecordset("qryBaMaschinenKomp", dbOpenDynaset)
    Do Until rcsP.EOF
        Debug.Print CurrentProject.Path & "BA - "; rcsP.Fields("BANummer").Value & " - " & rcsP.Fields("MaschinenName").Value & " - Verwendbar bis: " & rcsP.Fields("Überprüfungstermin").Value
        rcsP.MoveNext
    Loop
End Sub


MzKlMu

hallo,
ein Doppelpunkt ist in Dateinamen nicht zulässig. Ich würde auch auf keinen Fall das Datum mit Punkten schreiben und auf die vielen Leerzeichen würde ich auch verzichten.
Und .Value braucht man auch nicht. Ist aber nicht falsch, macht nur die Zeile kürzer.
Gruß Klaus

ebs17

Einem erzeugten PDF sollte man auch die Dateiendung .pdf geben. Was meinst Du mit "alle so ... wie es sein soll"?

Der Fehler: In dem unendlich langen und prolematischen Dateinamen sollen Inhalte von drei Recordsetfeldern eingebaut werden. Die Abfrage zur Recordseterzeugung hat aber nur ein Feld. Wer wundert sich dann noch?
Mit freundlichem Glück Auf!

Eberhard