#

VBA: Array mit Objekten
 
Normalerweise werden Arrays in vba mit dem Typ String oder Variant deklariert. Allerdings verliert man dadurch die mitgeführten Eigenschaft eines Objekts zur Laufzeit.
Wenn man Bilder als InlineShapes in einem Speicher verwalten möchte, dann kann man das Array gleich vom Typ: InlineShape erstellen.
 
Deklaration eines Arrays mit Objekte vom Typ: InlineShape in Word

'< dim Array >
Dim arrInlineShapes() As inlineShape
ReDim arrInlineShapes(ActiveDocument.InlineShapes.Count - 1)
'</ dim Array >
 

 
Beim Befüllen des Arrays muss man dann allerdings die Set Anweisung mitführen.

Set arrInlineShapes(iInlineShape - 1) = ActiveDocument.InlineShapes(iInlineShape)

 
Im Word Debugger erkennt man zur Laufzeit, dass die Objekte im Array-Speicher als eigenständige Kopien gespeichet sind.

 
Komplettes vba Code-Beispiel:
  1. Erstelle ein Array mit InlineShapes (Fotos)
  2. Lade Array mit allen Bildern, die im Word Dokument enthalten sind

Sub x0_Check_Images()
'-----------------< x0_Check_Images() >-----------------
'< dim Array >
Dim arrInlineShapes() As inlineShape
ReDim arrInlineShapes(ActiveDocument.InlineShapes.Count - 1)
'</ dim Array >

'--< InlineShapes >--
Dim picRange As range
Dim inlineShape As inlineShape
Dim iInlineShape As Integer

For iInlineShape = 1 To ActiveDocument.InlineShapes.Count
'----< @Loop: InlineShapes >----
Set arrInlineShapes(iInlineShape - 1) = ActiveDocument.InlineShapes(iInlineShape)
'----</ @Loop: InlineShapes >----
Next
'--</ InlineShapes >--

'-----------------</ x0_Check_Images() >-----------------
End Sub

 
Betrifft: Word, Access; Excel, Outlook, Powerpoint

Mobile

.

0123movie.net