Extrahieren von INCLUDEPICTURE-Dateinamen (Microsoft Word)
Wenn Sie mit langen Dokumenten arbeiten, die Grafiken enthalten, ist es nicht ungewöhnlich, das Feld INCLUDEPICTURE zu verwenden, um die Grafiken tatsächlich in das Dokument einzufügen. Wenn Ihr Dokument eine große Anzahl dieser Felder enthält, möchten Sie möglicherweise eine „Kunstliste“ erstellen, die die Namen der im Dokument verwendeten Grafikdateien enthält.
Mit einem relativ einfachen Makro können Sie jede Instanz des Felds INCLUDEPICTURE in Ihrem Dokument durchlaufen und nur die Namen der Dateien extrahieren, auf die verwiesen wird. Diese können dann einem neuen Dokument hinzugefügt werden, sodass das neue Dokument nach Abschluss des Makros nur eine Liste der Dateien enthält, auf die in den Feldern INCLUDEPICTURE verwiesen wird. Hier ist ein Makro, das genau dies tut:
Sub GetIncludePictures() Dim oField As Field Dim oCurrentDoc As Document Dim oNewDoc As Document Dim sFileName As String Set oCurrentDoc = ActiveDocument Set oNewDoc = Application.Documents.Add For Each oField In oCurrentDoc.Fields If oField.Type = wdFieldIncludePicture Then sFileName = Replace(oField.Code, "INCLUDEPICTURE", "") sFileName = Replace(sFileName, "MERGEFORMAT", "") sFileName = Replace(sFileName, "\*", "") sFileName = Replace(sFileName, "\d", "") sFileName = Replace(sFileName, Chr(34), "") sFileName = Replace(sFileName, "\\", "\") sFileName = Trim(sFileName) oNewDoc.Range.InsertAfter sFileName & vbCrLf End If Next oField oNewDoc.Activate Set oField = Nothing Set oCurrentDoc = Nothing Set oNewDoc = Nothing End Sub
Beachten Sie die mehrfache Verwendung der Ersetzen-Funktion im Makro. Diese Funktion ersetzt das Vorkommen einer Zeichenfolge in einer anderen Zeichenfolge durch anderen Text. Das mag verwirrend klingen, ist aber sehr praktisch. Stellen Sie sich als Beispiel vor, Sie haben eine Zeichenfolge (sMyString), die die Zeichen „Dies ist meine Zeichenfolge“ enthält, und Sie verwenden Folgendes:
SMyString = Replace(sMyString, "s", "X")
Dies führt dazu, dass jedes Kleinbuchstaben „s“ in sMyString durch ein Großbuchstaben „X“ ersetzt wird. Das Ergebnis ist, dass sMyString jetzt „ThiX iX my Xtring“ enthält.
Im Fall des GetIncludePictures-Makros entfernen die verschiedenen Zeilen, die Ersetzungsfunktionen enthalten, alle überflüssigen Zeichen aus dem Feldcode mit Ausnahme des tatsächlichen Dateinamens des Bildes. Wenn Sie auch etwas anderes entfernen möchten, können Sie weitere Zeilen hinzufügen, um diese Elemente zu entfernen. (Wenn Sie beispielsweise einen Standardpfadnamen entfernen möchten, zu dem Ihre Bilder gespeichert sind.)
Wenn das Makro ausgeführt wurde, sollte das einzige Element im neuen Dokument der Name der Bilder sein, wie in den folgenden Beispielen:
C:\mypics\picture1.tif ..\graphics\chap01\fig03.gif
Wenn Sie nur die Dateinamen und nicht die vollständigen Pfadnamen möchten, können Sie das Makro GetIncludePictures ein wenig ändern, um Code einzuschließen, der den Pfad analysiert. Sie können dies tun, indem Sie dem Makro direkt nach der Zeile sFileName = Trim (sFileName) Folgendes hinzufügen:
While Instr(sFileName, "\") > 0 sFileName = Mid(sFileName, Instr(sFileName, "\") + 1) Wend
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.
(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (11777) gilt für Microsoft Word 2007, 2010, 2013, 2016, 2019 und Word in Office 365. Eine Version dieses Tipps finden Sie für ältere Menüoberfläche von Word hier: