Hallo,
ich habe folgendes Problem zu lösen:
Ich habe eine Excel Tabelle in der in einer Spalte mehrere URL zu Google Maps stehen.
Ich möchte gerne automatisiert jede URL im Browser öffnen und von dem Routenplan eine PDF erstellen lassen.
Ist dies irgendwie möglich? Meine VBA Kenntnisse reichen dafür leider im Moment noch nicht aus.
Vielen Dank!
Hallo!
Kleines Beispiel. Die URLs stehen hier in Spalte B ab Zeile 2.
Wichtig: Einen Verweis auf die
Microsoft Internet Controls setzen.
Option Explicit
Public Sub OpenAndPrintURL()
Dim IEApp As Object
Dim strURL As String
Dim lngUrlCount As Long
Dim lngLastCell As Long
Rem Letzte Zeile in Spalte ermitteln
lngLastCell = Range("B" & Rows.Count).End(xlUp).Row
Rem Systemdrucker auf "PDF-Creator" setzen
Shell "rundll32 printui.dll,PrintUIEntry /y /n PDFCreator"
Rem Schleife beginnen
For lngUrlCount = 2 To lngLastCell
Rem IE-Session starten
Set IEApp = CreateObject("InternetExplorer.Application")
Rem Seiten ausgeben.
With IEApp
.Visible = True
.Navigate (Cells(lngUrlCount, 2)) 'Zur Internetseite
.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, 0, 0 'Internetseite drucken
Do While .busy
DoEvents
Loop
.Quit ' IE schließen
End With
Rem Browser-Session beenden
Set IEApp = Nothing
Next lngUrlCount
Rem Systemdrucker wiederherstellen
Shell "rundll32 printui.dll,PrintUIEntry /y /n ""Samsung ML-2850 Series"""
End Sub
VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media
Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0
Gruß, René
Entschuldigung für die späte Antwort.
Danke für den Code. Er hat mir sehr geholfen. Ein paar Änderungen habe ich vorgenommen.
Eine Frage habe ich noch.
Ist es möglich den Dateinamen für die erstellte PDF festzulegen? Bisher nimmer er die URL.
Den Dateinamen, der verwendet werden soll, würde ich in eine Spalte hinter der URL schreiben.
Code:
Public Sub OpenAndPrintURL()
Dim IEApp As Object
Dim strURL As String
Dim lngUrlCount As Long
Dim lngLastCell As Long
Dim Standarddrucker As String
Const Spalte_mit_URL_als_Zahl = 1
Const Spalte_mit_URL_als_Buchstabe = "A"
'Standarddrucker zwischenspeichern
Standarddrucker = ActivePrinter
Rem Letzte Zeile in Spalte ermitteln
lngLastCell = Range(Spalte_mit_URL_als_Buchstabe & Rows.Count).End(xlUp).Row
Rem Systemdrucker auf "PDF-Creator" setzen
Shell "rundll32 printui.dll,PrintUIEntry /y /n PDFCreator"
Rem Schleife beginnen
For lngUrlCount = 1 To lngLastCell
Rem IE-Session starten
Set IEApp = CreateObject("InternetExplorer.Application")
Rem Seiten ausgeben.
With IEApp
.Visible = False
.Navigate (Cells(lngUrlCount, Spalte_mit_URL_als_Zahl)) 'Zur Internetseite
'Kurze Wartezeit
Application.Wait Now + TimeSerial(0, 0, 5) 'wartet x Sekunden
.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, 6, 2 'Internetseite drucken
Do While .busy
DoEvents
Loop
.Quit ' IE schließen
End With
Rem Browser-Session beenden
Set IEApp = Nothing
Next lngUrlCount
'Standarddrucker wieder einstellen
Shell "rundll32 printui.dll,PrintUIEntry /y /n " & Standarddrucker
End Sub
(06.06.2017, 11:01)Rabe schrieb: [ -> ]Hi,
z.B. so:
Code:
'Druck als PDF (Name aus D3 in Tabelle1)
ThisWorkbook.ExportAsFixedFormat xlTypePDF, "C:\Users\Mustermann\Desktop\" & Tabelle1.Range("D3").Value, , , , , , True
Danke. Aber das speichert die Excel-Datei als PDF.
Ich möchte aber, dass die PDF, die im Internet Explorer erzeugt wurde, einen individuellen Dateinamen erhält. Der Dateiname soll in Excel in einer Spalte hinter der URL stehen.
Hallöchen,
um das im voraus zu tun, müsstest Du dem pdfcreator den Namen übergeben. Ob das mit dem Shell geht, bezweifle ich. Du müsstest wahrscheinlich versuchen, die Standardeinstellungen vom pdfcreator vor jedem Druck anzupassen. Das wäre dann auch noch Versionsabhängig, bis 1.7.x und ab ca. 2.1.x
Eventuell ist es einfacher, die Datei nach dem Druck durch Excel umzubenennen.
(10.06.2017, 20:25)schauan schrieb: [ -> ]Hallöchen,
um das im voraus zu tun, müsstest Du dem pdfcreator den Namen übergeben. Ob das mit dem Shell geht, bezweifle ich. Du müsstest wahrscheinlich versuchen, die Standardeinstellungen vom pdfcreator vor jedem Druck anzupassen. Das wäre dann auch noch Versionsabhängig, bis 1.7.x und ab ca. 2.1.x
Eventuell ist es einfacher, die Datei nach dem Druck durch Excel umzubenennen.
PDFCreator hat eine COM-Schnittstelle. Da kann man wohl den Dateinamen übergeben. Aber leider habe ich noch nicht herausgefunden wie das geht.
Es wäre schön, wenn die Dateinamen automatisch aus Excel genommen werden, da es sich um mehrere hundert URL handelt.
Hallo Michael,
wie ich schon schrieb, ist das versionsabhängig. Welche hast Du denn?
(11.06.2017, 14:06)schauan schrieb: [ -> ]Hallo Michael,
wie ich schon schrieb, ist das versionsabhängig. Welche hast Du denn?
Im Moment habe ich PDFCreator Version 2.5.1 Build 5.
Bin aber auch gewillt eine andere Version oder einen anderen PDF Drucker zu verwenden.