Top-Themen

Aktuelle Themen (A bis Z)

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, 8297 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 ..
Ähnliche Inhalte
VB for Applications
VBA Code Änderung Access 2010
gelöst Frage von Dr.CornwallisVB for Applications6 Kommentare

Liebe Gemeinde, ein Kollege hat mir einmal einen VBA Code zur Ermittlung des 1. und 5. Arbeitstags eines Monats ...

Microsoft Office
Kreuztabelle Access + VBA Code
Frage von Dr.CornwallisMicrosoft Office7 Kommentare

Hallo zusammen, ich habe eine Kreuztabelle aus einer Query erzeugt, aus dieser entsteht wiederum ein Bericht, nun habe ich ...

Datenbanken
ACCESS 2010 Datum über vba
gelöst Frage von CrashOverDatenbanken4 Kommentare

Hallo an Alle, ich habe da eine Frage, ich habe eine Access Datenbank einwickelt, und bin an einem Phänomen ...

VB for Applications
Access 2010 vba Recordset
gelöst Frage von EUuserVB for Applications3 Kommentare

Hallo zusammen, ich arbeite seit langem mal wieder mit Access und vba: Ich habe eine Datenbank, zwei Tabellen (identisch ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 14 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 16 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...