VBA Code in Access 2010 zur Aufruf einer Internetseite und automatischen Druck der Seite als PDF Datei
Hallo,
eine Frage an die Access VBA Experten.
Ich habe eine Access 2010 Datenbank in welcher eine Tabelle mit dem Namen "Tabelle1" ist, die ein Feld mit dem Namen "Ebaylink" hat.
Der Fedlinhalt des Feldes "Ebaylink" ist der komplette Link zur Ebayauktion.
Nun suche ich nach einer Lösung die folgendes automatisch ausführt.
Mit der Betätigung eines Button auf einem Formular soll ein Browser aufgehen.
Zum Beispiel der InternetExplorer oder Firefox.
Soweit bin ich schon mit Marko, ..., aber dann auch schon am Ende.
Was ich nun nicht lösen kann ist, dass automatisiert der Befehl ausgeführt wird, dass die geöffnete Seite nun direkt als PDF in dem Pfad
C:\Auktionen\ gespeichert wird und am besten gleich das Browserfenster wieder geschlossen wird.
Das was ich nun im Beispiel des InternetExplorers in Zusammenhang mit dem PDFCreator ausführen muss, ist die Auswahl:
Datei\Drucken\Druckerauswahl\Drucken\Speichern.
Da der PDFCreator nicht mein Standarddrucker ist wollte ich diesen für diese Aktion fest als Standard definieren.
Der Pfad wohin gedruckt wird soll auch fest sein. "C:\Auktionen\"
Der Name der PDF Datei ist bei mir der ausgewählte EBAY-Link, was so ok, bzw. gewollt ist.
Kann man das mit VBA Code und wenn ja wie lösen.
VBA Code ist noch nicht meine Stärke, da ich bisher immer mit Makros in Access gearbeitet habe.
Wichtig für mich auch, welche Verweise oder Libarys benötige ich in welcher Reihenfolge.
Ich nutze Win7 64bit und Office 2010 32bit. PDFCreator 1.2.3
Hat jemand dafür eine Lösung, bzw einen Ansatz wie ich diese Szenario bestmöglich lösen kann.
Gruß viking
eine Frage an die Access VBA Experten.
Ich habe eine Access 2010 Datenbank in welcher eine Tabelle mit dem Namen "Tabelle1" ist, die ein Feld mit dem Namen "Ebaylink" hat.
Der Fedlinhalt des Feldes "Ebaylink" ist der komplette Link zur Ebayauktion.
Nun suche ich nach einer Lösung die folgendes automatisch ausführt.
Mit der Betätigung eines Button auf einem Formular soll ein Browser aufgehen.
Zum Beispiel der InternetExplorer oder Firefox.
Soweit bin ich schon mit Marko, ..., aber dann auch schon am Ende.
Was ich nun nicht lösen kann ist, dass automatisiert der Befehl ausgeführt wird, dass die geöffnete Seite nun direkt als PDF in dem Pfad
C:\Auktionen\ gespeichert wird und am besten gleich das Browserfenster wieder geschlossen wird.
Das was ich nun im Beispiel des InternetExplorers in Zusammenhang mit dem PDFCreator ausführen muss, ist die Auswahl:
Datei\Drucken\Druckerauswahl\Drucken\Speichern.
Da der PDFCreator nicht mein Standarddrucker ist wollte ich diesen für diese Aktion fest als Standard definieren.
Der Pfad wohin gedruckt wird soll auch fest sein. "C:\Auktionen\"
Der Name der PDF Datei ist bei mir der ausgewählte EBAY-Link, was so ok, bzw. gewollt ist.
Kann man das mit VBA Code und wenn ja wie lösen.
VBA Code ist noch nicht meine Stärke, da ich bisher immer mit Makros in Access gearbeitet habe.
Wichtig für mich auch, welche Verweise oder Libarys benötige ich in welcher Reihenfolge.
Ich nutze Win7 64bit und Office 2010 32bit. PDFCreator 1.2.3
Hat jemand dafür eine Lösung, bzw einen Ansatz wie ich diese Szenario bestmöglich lösen kann.
Gruß viking
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 176881
Url: https://administrator.de/contentid/176881
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo viking!
Hier mal ein Code, der per PDFCreater eine Website in eine PDF-Datei druckt. Als Dateiname wird die Url verwendet, wobei nichterlaubte Zeichen in einen Unterstrich umgewandelt werden. Der aktuelle Standard-Drucker wird zu Begin gesichert und am Ende wieder als Standard-Drucker gesetzt.
Gruß Dieter
Hier mal ein Code, der per PDFCreater eine Website in eine PDF-Datei druckt. Als Dateiname wird die Url verwendet, wobei nichterlaubte Zeichen in einen Unterstrich umgewandelt werden. Der aktuelle Standard-Drucker wird zu Begin gesichert und am Ende wieder als Standard-Drucker gesetzt.
Option Explicit
Const PdfPath = "C:\Auktionen"
Const PDF_FORMAT = 0
Const PDF_AUTOSAVE = 1
Const PDF_AUTOSAVEDIRECTORY = 1
Const OLECMDID_PRINT = 6
Const OLECMDEXECOPT_DONTPROMPTUSER = 2
Const READYSTATE_COMPLETE = 4
Sub Test()
Call PrintToPdfCreater("[content:176881]
End Sub
Sub PrintToPdfCreater(ByVal Url As String)
Dim WMIService As Object, Printers As Object, Printer As Object, PdfJob As Object
Dim IExplorer As Object, Network As Object, DefaultPrinter As String
Set PdfJob = CreateObject("PDFCreator.clsPDFCreator")
If PdfJob.cStart("/NoProcessingAtStartup") = False Then
MsgBox "PDFCreator konnte nicht gestartet werden!", vbExclamation, "Fehler": Exit Sub
End If
With PdfJob
.cOption("UseAutosave") = PDF_AUTOSAVE
.cOption("UseAutosaveDirectory") = PDF_AUTOSAVEDIRECTORY
.cOption("AutosaveDirectory") = PdfPath
.cOption("AutosaveFilename") = Url
.cOption("AutosaveFormat") = PDF_FORMAT
.cClearCache
End With
Set Network = CreateObject("WScript.Network")
Set WMIService = GetObject("winmgmts:\\" & "." & "\root\cimv2")
Set Printers = WMIService.ExecQuery("Select * From Win32_Printer Where Default = True")
For Each Printer In Printers
DefaultPrinter = Printer.Name
Next
Network.SetDefaultPrinter "PDFCreater"
Set IExplorer = CreateObject("InternetExplorer.Application")
With IExplorer
.Visible = False
.Navigate Url
Do: Loop Until .ReadyState = READYSTATE_COMPLETE
.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
End With
With PdfJob
Do Until .cCountOfPrintjobs = 1: Loop
.cPrinterStop = False
Do Until .cCountOfPrintjobs = 0: Loop
.cClose
End With
IExplorer.Quit
Network.SetDefaultPrinter DefaultPrinter
End Sub
Gruß Dieter
Moin Moin,
so da sind wir wieder
eine kleine Vorbereitung, damit es funktioniert:
- Formular in der Entwurfsansicht öffnen
- im Ribbon auf den Tab [Entwurf]
- ActiveX Steuerelement anklicken
- "Microsoft Webbrowser" wählen
es wird ein Fenster auf deinem Formular erstellt, das einen Webbrower simuliert. Die Bezeichnung ist i.d.R. Webbrowser0
Ich nehme mal MyButton für mein Beispiel.
Also als Ereignis bei deinem Button eingeben (oder von hier kopieren):
Private Sub MyButton_Click()
Dim OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, WebSeite
OLECMDID_PRINT = 6
OLECMDEXECOPT_DONTPROMPTUSER = 2
WebSeite = Me.MyAuswahl ' keine Ahnung wie das Feld deiner Auswahl heißt
With WebBrowser0
.Navigate WebSeite
Do While .Busy: DoEvents: Loop
Do While .ReadyState <> 4: DoEvents: Loop
.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
End With
End Sub
Damit wird die Webseite deiner Wahl geöffnet und ohne Frage an den Standarddrucker ausgegeben.
Falls dein PDF-Printer nicht gleich speichert, könnte man noch mit Sendkeys entsprechende Tastendrücke simulieren (allerdings nicht im unsichtbaren Modus)
Grüße aus Rostock
Wolfgang
(Netwolf)
so da sind wir wieder
eine kleine Vorbereitung, damit es funktioniert:
- Formular in der Entwurfsansicht öffnen
- im Ribbon auf den Tab [Entwurf]
- ActiveX Steuerelement anklicken
- "Microsoft Webbrowser" wählen
es wird ein Fenster auf deinem Formular erstellt, das einen Webbrower simuliert. Die Bezeichnung ist i.d.R. Webbrowser0
Mit der Betätigung eines Button auf einem Formular soll ein Browser aufgehen.
tja, wenn ich nun wüsste wie die Bezeichnung des Buttons wäre Ich nehme mal MyButton für mein Beispiel.
Also als Ereignis bei deinem Button eingeben (oder von hier kopieren):
Private Sub MyButton_Click()
Dim OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, WebSeite
OLECMDID_PRINT = 6
OLECMDEXECOPT_DONTPROMPTUSER = 2
WebSeite = Me.MyAuswahl ' keine Ahnung wie das Feld deiner Auswahl heißt
With WebBrowser0
.Navigate WebSeite
Do While .Busy: DoEvents: Loop
Do While .ReadyState <> 4: DoEvents: Loop
.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
End With
End Sub
Damit wird die Webseite deiner Wahl geöffnet und ohne Frage an den Standarddrucker ausgegeben.
Falls dein PDF-Printer nicht gleich speichert, könnte man noch mit Sendkeys entsprechende Tastendrücke simulieren (allerdings nicht im unsichtbaren Modus)
Grüße aus Rostock
Wolfgang
(Netwolf)
Moin Moin,
da hat sich Dieter mehr Mühe gemacht als ich. Der Code ist natürlich viel besser als meiner, da er den PDFCreator gleich mit steuert.
In diesen Rahmen kommt der Aufruf für die SUB Prozedur/Funktion die aufgerufen werden soll. Mit der SUB Test hat Dieter den Aufruf demonstriert.
Da dein Formularfeld Ebaylink heißt, wäre dann folgendes zu tun:
1. Kopiere den Code von Dieter komplett VOR den automatisch erzeugten Rahmen deines Buttons. Da vermutlich "Option Explicit" schon bei dir drinsteht, kannst du diese Zeile auslassen beim Kopieren.
2. den "Rahmen" füllst du wie folgt (ME. ist die Variable/Platzhalter für das aktuell genutzte Formular):
Private Sub Befehl1_Click()
Call PrintToPdfCreater(ME.Ebaylink)
End Sub
3. Fertig
Grüße aus Rostock
Wolfgang
(Netwolf)
da hat sich Dieter mehr Mühe gemacht als ich. Der Code ist natürlich viel besser als meiner, da er den PDFCreator gleich mit steuert.
Wenn ich einen Button oder einem Formularfeld eine Code zuweisen will, dann steht am Anfang immer so was wie
Das ist richtig, das ist der "Rahmen" für das Ereignis des Buttons.In diesen Rahmen kommt der Aufruf für die SUB Prozedur/Funktion die aufgerufen werden soll. Mit der SUB Test hat Dieter den Aufruf demonstriert.
Da dein Formularfeld Ebaylink heißt, wäre dann folgendes zu tun:
1. Kopiere den Code von Dieter komplett VOR den automatisch erzeugten Rahmen deines Buttons. Da vermutlich "Option Explicit" schon bei dir drinsteht, kannst du diese Zeile auslassen beim Kopieren.
2. den "Rahmen" füllst du wie folgt (ME. ist die Variable/Platzhalter für das aktuell genutzte Formular):
Private Sub Befehl1_Click()
Call PrintToPdfCreater(ME.Ebaylink)
End Sub
3. Fertig
Grüße aus Rostock
Wolfgang
(Netwolf)
Hallo Netwolf,
die Funktion könnte ich gut gebrauchen. Allerdings will ich auf der Internetseite eine Abfrage starten, deren Ergebnis dann als PDF in ein bestimmtes Verezichnis gedruckt werden soll. Ich möchte die Empfangsbestätigung von unterschiedlichen Paketdienstleistern dokumentieren. Gibt es dafür auch eine Lösung?
Viele Grüße aus Westfalen
die Funktion könnte ich gut gebrauchen. Allerdings will ich auf der Internetseite eine Abfrage starten, deren Ergebnis dann als PDF in ein bestimmtes Verezichnis gedruckt werden soll. Ich möchte die Empfangsbestätigung von unterschiedlichen Paketdienstleistern dokumentieren. Gibt es dafür auch eine Lösung?
Viele Grüße aus Westfalen