AW: mehrere Hyperlink-Dateien in pdf drucken
03.03.2023 11:37:48
rom0685
Hallo Pierre,
die für mich schlüssigste/verständlichste Programmierung sieht so aus:
[Die ersten beiden Private subs sind an Buttons (Activex-Steuerelemente) gekoppelt, mit denen ich
die pdf-Auswahl zurücksetzte und die Datenbank der Dateipfade aktualisieren] ... das funktioniert soweit auch einwandfrei.
Variante 1
Private Sub AuswahlZurücksetzen_Click()
Range("Auswahl_x").ClearContents
End Sub
Private Sub BibliothekAktualisieren_Click()
ThisWorkbook.RefreshAll
End Sub
Public Sub AuswahlDrucken_Click()
Dim objHyperlink As Hyperlink
Dim objWorkbook As Workbook
For Each objHyperlink In ActiveSheet.Hyperlinks
If Not Intersect(objHyperlink.Range, Range("J11:J200")) Is Nothing Then
Set objWorkbook = Workbooks.Open(Filename:=objHyperlink.Address)
Call objWorkbook.PrintOut
Call objWorkbook.Close(SaveChanges:=False)
End If
Next
Set objWorkbook = Nothing
End Sub
▲
Beim drücken des Button 'Auswahl Drucken' passiert aber rein garnichts + der Editor gibt auch keine Fehlermeldung zurück
..........
Variante 2
Private Sub AuswahlZurücksetzen_Click()
Range("Auswahl_x").ClearContents
End Sub
Private Sub BibliothekAktualisieren_Click()
ThisWorkbook.RefreshAll
End Sub
Option Explicit
Declare Function apiShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) _
As Long
Public Sub PrintFile(ByVal strPathAndFilename As String)
Call apiShellExecute(Application.hwnd, "print", strPathAndFilename, vbNullString, vbNullString, 0)
End Sub
Private Sub AuswahlDrucken_Click()
PrintFile ("C:\Test.pdf")
End Sub
▲
Hier bringt der Editor gleich die genannte Fehlermeldung + wird der Absatz
'Private Declare Function' markiert.
Es schaut im Editor durch die automatisch gesetzten Objekt-Trennlinien aber auch schon so aus
als wäre etwas falsch
..........
Variante 3
Private Sub AuswahlZurücksetzen_Click()
Range("Auswahl_x").ClearContents
End Sub
Private Sub BibliothekAktualisieren_Click()
ThisWorkbook.RefreshAll
End Sub
Public Sub AuswahlDrucken_Click()
' Alle Felder auf Links prüfen
For Each oLnk In ActiveDocument.Fields
If oLnk.Type = wdFieldLink Then
' Verknüpfungstyp ermitteln und prüfen ob Datei als Icon eingefügt
If oLnk.LinkFormat.Type = wdLinkTypeOLE And oLnk.OLEFormat.DisplayAsIcon Then
' Dateinamen ermitteln
sLink = oLnk.LinkFormat.SourceFullName
sLink = Replace(sLink, "\", "\\")
If Dir(sLink) = oLnk.LinkFormat.SourceName Then 'Datei vorhanden?
Application.ActivePrinter = sPrinter
' Link-Datei drucken
ShellExecute &O0, "Print", sLink, vbNullString, vbNullString, 1
End If
End If
End If
Next oLnk
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) _
As Long
' Aufruf in einem Modul
' Link-Datei drucken
ShellExecute &O0, "Print", sLink, vbNullString, vbNullString, 1
'Standardrucker wieder herstellen
Application.ActivePrinter = DefPrinter
▲
Hier bringt der Editor auch die genannte Fehlermeldung + wird der Absatz
'Private Declare Function' markiert