Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Bericht Automatisch als HTML oder PDF exportieren und Automatisch überschreiben

Begonnen von kartler, Mai 19, 2025, 20:31:49

⏪ vorheriges - nächstes ⏩

kartler

Hallo

Ich bin leider schlimmer VBA anfänger.

Der Plan ist einen Bericht Automatisch zu Exportieren in html und auf einen bestimmten Pfad zu speichern und das entweder alle 30 sekunden oder wenn in einem Datensatz im Formular eine Änderung vorgenommen wird.

Vielleicht kann mir hier jemand helfen habe auch schon etwas im google gefunden, hier bekomme ich aber eine Fehlermeldung wo ich nicht weiterkomme.
--------------------------------------------------------------------------------------------------------
Sub BerichtExportierenUndUeberschreiben()
    Dim strBerichtName As String
    Dim strDateiname As String
    Dim strZielordner As String

    ' Berichtnamen und Dateinamen festlegen
    strBerichtName = "DeinBerichtName"  ' Ersetze "DeinBerichtName" mit dem tatsächlichen Berichtsnamen
    strDateiname = "DeinBericht.pdf"  ' Ersetze "DeinBericht.pdf" mit dem gewünschten Dateinamen und Format

    ' Zielordner festlegen
    strZielordner = "C:\DeineZiele\Berichte\"  ' Ersetze "C:\DeineZiele\Berichte\" mit dem gewünschten Zielordner

    ' Überprüfen, ob der Zielordner existiert, und ggf. erstellen
    If Dir(strZielordner, vbDirectory) = "" Then
        MkDir strZielordner
    End If

    ' Vollständigen Dateipfad erstellen
    Dim strVollstaendigerDateipfad As String
    strVollstaendigerDateipfad = strZielordner & strDateiname

    ' Bericht exportieren
    With CurrentDb.Reports(strBerichtName)
        .Export strVollstaendigerDateipfad, acExportFormatPDF, False, False ' Anpassen des Exportformats (z.B. acExportFormatPDF, acExportFormatExcel)
    End With

    ' Optional: Eine Meldung anzeigen, dass der Export abgeschlossen ist
    MsgBox "Bericht " & strBerichtName & " exportiert nach " & strVollstaendigerDateipfad, vbInformation

End Sub
--------------------------------------------------------------------------------------------------------
Der Fehler wird mir bei: Reports angezeigt. Mir ist aber überhaupt nicht klar warum das nicht geht

With CurrentDb.Reports(strBerichtName)

vielleicht gibt es ja hier jemand der mir weiterhelfen könnte.

markusxy

Irgendwas erfinden, führt natürlich nicht weit ...

Hier gehts zur Lösung: https://learn.microsoft.com/de-de/office/vba/api/access.docmd.outputto

Vielleicht erklärst aber erstmal die Hintergründe.
Irgendwie klingt das alles eher unbrauchbar.

Knobbi38

Hallo,

ZitatDer Plan ist einen Bericht Automatisch zu Exportieren in html und auf einen bestimmten Pfad zu speichern und das entweder alle 30 sekunden oder wenn in einem Datensatz im Formular eine Änderung vorgenommen wird.
Hört sich nicht wirklich wie ein "Plan" an. Auch als "schlimmer VBA Anfänger" solltest du mal die Hintergründe erläutern.

Knobbi38

kartler

Hallo Ihr beiden.

Leider habe ich bis jetzt nur VBA zusammengebastelt und das auch nur für Excel wo es die Aufzeichnungsmöglichkeit gibt. Und mir so hin und wieder über Google etwas zusammengesucht und getestet.

Wie ich gemerkt habe ist Access ja schon völlig anders.

Ich denke das es mir da schon an den Basics fehlt.
Der Plan ist folgender:

Die Access ist eine Zeitauswertung die 4 Zeiten zusammenzählt und Sortiert als Bericht ausgibt. Nun ist der Plan diesen Bericht nach jeder Eingabe einer Wertungszeit (oder auch voll Automatisch alle 60Sekunden) zu Exportieren als PDF oder noch besser HTML damit man es vollautomatisch auf eine Seite ins Netz laden kann. Dort soll sie dann über einen Link geöffnet werden können daher wird HTML denke ich besser sein.



Gibt es denn irgendwo Beispiele wie man solche VBAs schreiben muss, für excel findet man so viel aber für Access gibts da ja gar nichts.

Knobbi38

Hallo,

das ist vielleicht doch eher etwas für Excel oder Word, hat aber mit einer Datenbankanwendung wenig zu tun.

Knobbi38

kartler

Also das ist ja nicht die Frage. Die Access Datenbank gibt es ja schon. Es geht nur darum einen Bericht automatisiert als HTML oder PDF zu Exportieren. Entweder nach Zeit oder wenn in einer Tabelle eine neue eingabe hinzukommt.

Knobbi38

Hallo  Kartler,

wie Markus schon geschrieben hat, kann man nicht einfach seine eigene Syntax erfinden, sondern muß sich an VBA und das Objektmodell von Access richten und da gibt es für einen solchen Export die von Markus angesprochene Funktion mit einem Beispiel.

Wenn du diese Funktion regelmäßig aufrufen möchtest, kannst du dafür einen Formular-Timer verwenden, wie hier beschrieben:
https://learn.microsoft.com/en-us/office/vba/api/access.form.timerinterval#example

Um Änderungen an einer Tabelle zu erkennen, müßte man vielleicht wissen, wie diese Änderungen in die DB kommen.

Gruß Knobbi38

PS:
Für Anfänger kann ich das Access Tutorial empfehlen, dort gibt es auch einen Link zu einem VBA Tutorial.


Bitsqueezer

Hallo,

um eine Seite im Web vollautomatisiert aufrufbar zu machen, wird es nicht unbedingt reichen, eine HTML-Seite zu überschreiben. Das Schreiben könnte das Lesen blockieren und zu Fehlermeldungen beim User führen, wenn der gerade versucht, die Seite abzurufen, während sie überschrieben wird.
Außerdem wird der Browser eine statische HTML-Seite in seinen Cache packen. Wenn die Seite also nicht im Header stehen hat, daß sie sofort aktualisiert werden soll, sieht der User ständig die alte Seite, bis er vielleicht den Browser neu startet oder aktualisieren klickt.

Umgekehrt könnte auch der Schreibvorgang von Access aus vom Webserver blockiert sein.

Da Du ja sicherlich einen Webserver hast, wäre die richtige und einfachere Variante, mit Webserver-Backend-Komponenten auf die Datenbank zuzugreifen und die betreffende Webseite aktiv zu aktualisieren. Das geht z.B. mit PHP/JavaScript oder ASP.NET, Blazor und wie sie alle heißen.
Die Backend-Skripte greifen dabei selbst auf die Datenbank zu, lesen die Informationen von z.B. einer Abfrage, bereiten sie optisch auf als HTML/CSS/Javascript und stellen sie zum Abruf bereit bzw. der Browser holt sich die Informationen per AJAX o.Ä.
Dabei wird Access selbst überhaupt nicht gebraucht, auch kein VBA, und der Bericht ist ebenfalls überflüssig. Es muß nur ein Access-Treiber installiert sein (per Default auf allen Windows-Rechnern enthalten) und die Access-Datei muß für den Webserver an einem zugreifbaren Ort liegen, auf den nur der Webserver zugreifen kann, also nicht die User des Webservers.

Gruß

Christian

markusxy

Zitat von: kartler am Mai 19, 2025, 23:14:40Nun ist der Plan diesen Bericht nach jeder Eingabe einer Wertungszeit (oder auch voll Automatisch alle 60Sekunden) zu Exportieren als PDF oder noch besser HTML damit man es vollautomatisch auf eine Seite ins Netz laden kann.

Warum so umständlich?
Wenn der Zugang über Web gewährleistet ist, die Eingaben über Web machen und dann kann jeder jederzeit die Ergebnisse ebenso dort sehen. Falls man tatsächlich einen Download benötigt, könnte man diesen ja ganz simpel per CSV generieren, oder eine PDF on-the-fly erzeugen.