Aktuelle Seite:
/vba/vbaPrintLinkFiles.htm
Letzte Änderung: 14.09.2009

Getestet unter Word2000Getestet unter WordXPGetestet unter Word2003  
Beispiel anzeigen
Makro/Datei speichern
Print

Über die Option Einfügen-Objekt lassen sich verschiedene Objekte in ein Dokument einfügen. Dazu stehen u.a. die Optionen "Verknüpfen" und "Als Symbol anzeigen" zur Verfügung.
In diesem Artikel soll beschrieben werden, wie als Symbol verknüpfte PDF-Dateien automatisch mit dem Dokument zusammen ausgedruckt werden können.
Voraussetzung ist aber, dass die (PDF) Dateien als Symbol verknüpft sind, da es ansonsten normalerweise keinen Sinn ergibt das Objekt noch einmal auszudrucken.

Das kleine Makro macht nun nichts anderes als das Dokument über den Druckdialog zu drucken, um den ausgewählten Drucker zu ermitteln, das Dokument nach diesen LINK-Feldern zu durchsuchen und alle gefundenen verlinkten Dateien anschließend auf dem ausgewählten Drucker auszugeben.

Zur Ermittlung des Feld-Types (wdFieldLink) und des Link-Types (wdLinkTypeOLE und DisplayAsIcon) lassen sich die entsprechenden Eigenschaften des Fields-Objektes verwenden:

Code markieren
' 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

Der Ausruck erfolgt dabei über das API "link ShellExecute" allerdings mit dem Paramter "Print" und dem ermittelten Dateinamen.

Als Handle für die Anwendung (Word) wird wieder &0 verwendet.

Abschließend wird der Standarddrucker wieder zurückgesetzt:

'Standardrucker wieder herstellen  
 Application.ActivePrinter = DefPrinter

 www.chf-online.de/vba/vbaPrintLinkFiles.htm © 2001-11 Christian Freßdorf (Zaphod-Systems)