Startordner "Bild einfügen" vorgeben |
|
|||||||||||||||||||||
Möchte man per Makro ein Bild in den Text einfügen, kann man auf das integrierte Dialogfeld "Bild einfügen" (Einfügen/Grafik/Aus Datei...) zurückgreifen. Standardmäßig landet man unter Word2000 aber in den "Eigenen Bildern". Leider schlägt auch der Versuch, dem Dialog einen Startpfad mitzugeben oder diesen mittels des Befehles ChangeFileOpenDirectory $Pfad zu ändern, fehl bzw. arbeitet sehr unzuverlässig. Zum Umgehen dieses "Fehlers" kann folgendes Verfahren verwendet werde: Application.Options.DefaultFilePath(wdPicturesPath) ausgelesen und geändert werden. In der Funktion wird die Anzeige des Dialogfensters zur Bildauswahl aber nur verwendet, um das Bild auszuwählen und den Dateipfad zurück zu liefern. Das Einfügen des Bildes selbst geschieht außerhalb der Funktion und kann an eigene Bedürfnisse angepasst werden. So kann z.B. mit dieser einen Funktion ein ausgewähltes Bild mal in den Text (als InlineShape) mal hinter den Text liegend (als Shape) eingefügt werden, ohne mehrere Funktionen zu benötigen. Function SwitchInsertPicturePath(strOpenFolder As String) As String Dim strOld As String On Error GoTo SwitchInsertPicturePath_Error With Application.Options ' retten des eingestellen Pfades strOld = .DefaultFilePath(wdPicturesPath) .DefaultFilePath(wdPicturesPath) = strOpenFolder With Dialogs(wdDialogInsertPicture) .Display ' Rückgabe des Dateinamens, Abruch: Leerstring SwitchInsertPicturePath = .Name End With ' Fehlerbehandlung SwitchInsertPicturePath_Error: ' Wiederherstellen des eingestellen Pfades .DefaultFilePath(wdPicturesPath) = strOld End With End Function Der Aufruf der Funktion kann dann aus einer Prozedur erfolgen, indem ein Startverzeichnis als Parameter angegeben wird. In diesem Beispielaufruf wird das ausgewählte Bild als verknüpftes InlineShape in den Fließtext eingefügt; der Aufruf kann aber beliebig geändert werden. Sub InsertPicture() Dim retPath As String retPath = SwitchInsertPicturePath("C:\temp") If retPath <> "" Then Selection.InlineShapes.AddPicture retPath, True, False End If End Sub |
www.chf-online.de/vba/vbabildeinfuegen.htm | © 2001-11 Christian Freßdorf (Zaphod-Systems) |