Play gedrückt – Nichts. – Lauter gemacht – Nichts. – Noch lauter gemacht – Leises Rauschen. – Kopfhörer rausgezogen – Ganze Straße wach …

Der Kunde will nicht nur, dass in einer Reihe von Excelvorlagen das Logo automatisiert, das heißt: mit VBA, ausgetauscht wird, sondern auch in Wordvorlagen.

Und damit beginnt wieder die Fummelei: liegt das Logo in der Kopfzeile oder in einer Tabelle in der Kopfzeile?

Eine Kopfzeile kann zur ersten Seite gehören, zum Objekt „gerade und ungerade Seiten unterschiedlich“ oder „gerade und ungerade Seiten nicht unterschiedlich“. Und diese wiederum an verschiedenen Abschnitten. Also sind eine Reihe von Schleifen nötig, um das alte Logo zu finden und zu löschen:

    For i = 1 To wdDatei.Sections.Count
        
        Set wdKopf = wdDatei.Sections(i).Headers(wdHeaderFooterPrimary)
        If wdKopf.Range.InlineShapes.Count > 0 Then
            Set wdMyRange = wdKopf.Range.InlineShapes(1).Range
            wdKopf.Range.InlineShapes(1).Delete
            wdKopf.Range.InlineShapes.AddPicture Bildpfad, , , wdMyRange ' Kopf ohne Tabelle
        End If
        
        For j = 1 To wdKopf.Range.Tables.Count
            Set wdTabelle = wdKopf.Range.Tables(j)
        
            intZeilenAnzahl = wdTabelle.Rows.Count
            intSpaltenAnzahl = wdTabelle.Columns.Count
            
            For intZeile = 1 To intZeilenAnzahl
                For intSpalte = 1 To intSpaltenAnzahl
                    If wdTabelle.Cell(intZeile, intSpalte).Range.InlineShapes.Count > 0 Then
                        
                        wdTabelle.Cell(intZeile, intSpalte).Range.InlineShapes(1).Delete
                        
                        Set wdMyInShape = wdTabelle.Cell(intZeile, intSpalte).Range.InlineShapes.AddPicture(Bildpfad, , , wdMyRange)

                    End If
                Next intSpalte
            Next intZeile
        
        Next j