Aktuelle Seite:
/vba/vbabildeinfuegen.htm
Letzte Änderung: 24.06.2006

Getestet unter Word2000  
Makro/Datei speichern
Print

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:
In den Word-Optionen (Extras/Optionen/Speicherort für Dateien/Clipartordner) kann ein Standardverzeichnis für die Bildauswahl festgelegt werden. Diese Einstellung kann über den Aufruf

Application.Options.DefaultFilePath(wdPicturesPath) 

ausgelesen und geändert werden.
Diese Möglichkeit wird nun für die Auswahl eines Bildes verwendet, um den Pfad auf das gewünschte Verzeichnis umzuändern; anschließend wird diese Einstellung auf den ursprünglichen Wert zurückgesetzt.

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)