Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBA Code in Access 2010 zur Aufruf einer Internetseite und automatischen Druck der Seite als PDF Datei

Frage Microsoft Microsoft Office

Mitglied: viking

viking (Level 1) - Jetzt verbinden

26.11.2011, aktualisiert 18.10.2012, 7954 Aufrufe, 7 Kommentare

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
Mitglied: 76109
27.11.2011, aktualisiert 18.10.2012
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.
01.
Option Explicit 
02.
 
03.
Const PdfPath = "C:\Auktionen" 
04.
  
05.
Const PDF_FORMAT = 0 
06.
Const PDF_AUTOSAVE = 1 
07.
Const PDF_AUTOSAVEDIRECTORY = 1 
08.
Const OLECMDID_PRINT = 6 
09.
Const OLECMDEXECOPT_DONTPROMPTUSER = 2 
10.
Const READYSTATE_COMPLETE = 4 
11.
 
12.
Sub Test() 
13.
    Call PrintToPdfCreater("http://www.administrator.de/forum/vba-code-in-access-2010-zur-aufruf-einer-internetseite-und-automatischen-druck-der-seite-als-pdf-datei-176881.html 
14.
End Sub 
15.
 
16.
 
17.
Sub PrintToPdfCreater(ByVal Url As String) 
18.
    Dim WMIService As Object, Printers As Object, Printer As Object, PdfJob As Object 
19.
    Dim IExplorer As Object, Network As Object, DefaultPrinter As String 
20.
         
21.
    Set PdfJob = CreateObject("PDFCreator.clsPDFCreator") 
22.
 
23.
    If PdfJob.cStart("/NoProcessingAtStartup") = False Then 
24.
        MsgBox "PDFCreator konnte nicht gestartet werden!", vbExclamation, "Fehler":  Exit Sub 
25.
    End If 
26.
 
27.
    With PdfJob 
28.
        .cOption("UseAutosave") = PDF_AUTOSAVE 
29.
        .cOption("UseAutosaveDirectory") = PDF_AUTOSAVEDIRECTORY 
30.
        .cOption("AutosaveDirectory") = PdfPath 
31.
        .cOption("AutosaveFilename") = Url 
32.
        .cOption("AutosaveFormat") = PDF_FORMAT 
33.
        .cClearCache 
34.
    End With 
35.
     
36.
    Set Network = CreateObject("WScript.Network") 
37.
    Set WMIService = GetObject("winmgmts:\\" & "." & "\root\cimv2") 
38.
     
39.
    Set Printers = WMIService.ExecQuery("Select * From Win32_Printer Where Default = True") 
40.
     
41.
    For Each Printer In Printers 
42.
        DefaultPrinter = Printer.Name 
43.
    Next 
44.
     
45.
    Network.SetDefaultPrinter "PDFCreater" 
46.
     
47.
    Set IExplorer = CreateObject("InternetExplorer.Application") 
48.
     
49.
    With IExplorer 
50.
        .Visible = False 
51.
        .Navigate Url 
52.
         Do: Loop Until .ReadyState = READYSTATE_COMPLETE 
53.
        .ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER 
54.
    End With 
55.
   
56.
    With PdfJob 
57.
         Do Until .cCountOfPrintjobs = 1:  Loop 
58.
        .cPrinterStop = False 
59.
         Do Until .cCountOfPrintjobs = 0:  Loop 
60.
        .cClose 
61.
    End With 
62.
     
63.
    IExplorer.Quit 
64.
     
65.
    Network.SetDefaultPrinter DefaultPrinter 
66.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: NetWolf
27.11.2011 um 17:55 Uhr
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

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)
Bitte warten ..
Mitglied: viking
27.11.2011 um 21:24 Uhr
Hallo Dieter,

zunächst mal Danke für Deine Code.
Nun bin ich noch ein richtiger Blindgänger was das VBA betriftt, wie man diesen einbindet und habe da noch 2-3 Anfängerprobleme.
Bin gerdade am Testen Deines Vorschlags.

Erste dumme Frage:
Wenn ich einen Button oder einem Formularfeld eine Code zuweisen will, dann steht am Anfang immer so was wie

Private Sub Befehl1_Click()

End Sub

Wie kriege ich es gebacken dass ich Deinen Code in ein Formular auf einen Button einbinden.
Mein Button hätte den Namen "Befehl1"

Momentan habe ich wenn ich Deine Code bei mir reinkopiere 3 Abschnitte
Zeile 01
Zeile 12
Zeile 17

zweite Frage, wie schaffe ich es dass, ich den Link selbst aus einem Feld beziehe.
Du hast diesen wenn ich es richtig interpretiere in Zeile 13 fest vorgegeben.
Ich habe es so, dass dieser aus einem Feld einer Datenbanktabelle "Tabelle1" kommt. Das Feld selbst hat den Namen "Ebaylink" und diese habe ich im Formular auch verfügbar.
Ich weiß dass das keine tolle Vergabe von Tabellennamen und Tabellenfeldern ist, aber so hab ich halt vorleigen.

Gruß viking
Bitte warten ..
Mitglied: viking
27.11.2011 um 22:51 Uhr
Hallo Wolfgang,

ja, da bin ich schon wieder, ...

Deinen Code habe ich probiert, ...,
den WebBrowser habe ich bei mir auf 9 Stellen müssen anstelle 0.

Dann hats mir die Seite auch gleich auf meinen normalen Drucker raus.

Nach Umstellung des PDF Creator als Standard habe ich den PDF Creator geöffnet bekommen.

Dort habe ich nun automatisches speichern und die Einstellungen vorgenommen, dann tut das auch.

Er speichert nun wie er soll ohne zu fragen auf C:\Auktionen\ rein. Spitze!

Die Variante mit dem automatischen Speichern ist aber nicht so schön, dass er dies nun immer macht und da ich ab und an auch andere Dokumente mit dem PDFCreator drucken will ist das für die Dokumente schlecht.

Könnte man da noch was von Dieter aufnehmen?

Gruß und Danke !!!!

viking
Bitte warten ..
Mitglied: NetWolf
28.11.2011 um 12:16 Uhr
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.

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)
Bitte warten ..
Mitglied: viking
28.11.2011 um 14:39 Uhr
Hallo Wolfgang,

habs nun eingebunden, klappt wunderbar!

Danke für die Hilfe, auch Dir Dieter für Dein umfangreiches Script.

Gruß viking
Bitte warten ..
Mitglied: Winzling
22.11.2015 um 18:25 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Datenbanken
gelöst Syntaxfehler VBA Access 2010 (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Microsoft Office
Kreuztabelle Access + VBA Code (7)

Frage von Dr.Cornwallis zum Thema Microsoft Office ...

Datenbanken
gelöst Access 2010 Abfrage erster Werktag (10)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
gelöst Access 2010 komplizierte Abfrage (3)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...