Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Grafik per VBA austauschen?

Grafik per VBA austauschen?
23.01.2015 11:04:13
Selma
Hallo Leute,
ich habe in vielen der Arbeitsblätter der Datei ein Firmenlogo eingefügt und diesen ein Name "Logo" gegeben. Gibt es die Möglichkeit über VBA in allen Arbeitsblättern der Datei das Shape "Logo" durch das Logo "D:\Daten\Logo_45x13mm.jpg" (liegt lokal) auszutauschen?
Der Name "Logo" soll nachdem Austausch beibehalten werden.
Besten Dank im Voraus!
Gruß Selma

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Grafik per VBA austauschen?
23.01.2015 11:41:43
Selma
Ich habe in zwischen ein Makro (mit Logoabmessungen und Positionierung)im Internet gefunden.
Kann ich im Code die Abmessungen und die Positionierung weglassen? Neu eingefügtes Logo hat schon die richtige Abmessungen und die Position soll von dem vorherigen Logo übernommen werden.
Sub Logo_aendern()
Const PICTURE_PATH = "D:\Daten\Logo_neu.jpg"
Const PICTURE_OLD_NAME = "Logo"
Const PICTURE_NEW_NAME = "Logo"
Const PICTURE_HEIGHT = 50
Const PICTURE_WIDTH = 171
Const PADDING_LEFT = 6
Const PADDING_TOP = 8
Dim objShape As Shape
Dim objWorksheet As Worksheet
For Each objWorksheet In ThisWorkbook.Worksheets
With objWorksheet
For Each objShape In .Shapes
If objShape.Name = PICTURE_OLD_NAME Then
objShape.Delete
Exit For
End If
Next
Set objShape = .Shapes.AddPicture(Filename:=PICTURE_PATH, _
LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
Left:=.Cells(3, 8).Left + PADDING_LEFT, Top:=.Cells(3, 8).Top - PADDING_TOP, _
Width:=PICTURE_WIDTH, Height:=PICTURE_HEIGHT)
objShape.Name = PICTURE_NEW_NAME
End With
Next
Set objShape = Nothing
End Sub

Anzeige
AW: Grafik per VBA austauschen?
23.01.2015 15:44:34
Beverly
Hi Selma,
versuche es mal so (ungetestet):
            Set objShape = .Shapes.AddPicture(Filename:=PICTURE_PATH, _
LinkToFile:=msoFalse, SaveWithDocument:=msoTrue)


AW: Grafik per VBA austauschen?
29.01.2015 16:05:29
Selma
Hallo Karin,
es funktioniert auch nicht.
Argument ist nicht optional!
Gruß,
Selma

Anzeige
AW: Grafik per VBA austauschen?
29.01.2015 16:26:00
Beverly
Hi Selma,
versuche es mal so:
Sub BildErsetzen()
Dim picBild As Picture
Dim objWorksheet As Worksheet
For Each objWorksheet In ThisWorkbook.Worksheets
With objWorksheet
For Each picBild In .Pictures
If picBild.Name = "Logo" Then
picBild.Delete
Exit For
End If
Next
Set picBild = .Pictures.Insert("D:\Daten\Logo_neu.jpg")
picBild.Name = "Logo"
End With
Next
Set picBild = Nothing
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Grafik per VBA austauschen


Schritt-für-Schritt-Anleitung

Um ein Excel-Logo über VBA in allen Arbeitsblättern zu ersetzen, kannst du folgenden VBA-Code verwenden:

Sub Logo_aendern()
    Const PICTURE_PATH = "D:\Daten\Logo_neu.jpg"
    Const PICTURE_OLD_NAME = "Logo"
    Const PICTURE_NEW_NAME = "Logo"
    Dim objShape As Shape
    Dim objWorksheet As Worksheet
    For Each objWorksheet In ThisWorkbook.Worksheets
        With objWorksheet
            For Each objShape In .Shapes
                If objShape.Name = PICTURE_OLD_NAME Then
                    objShape.Delete
                    Exit For
                End If
            Next
            Set objShape = .Shapes.AddPicture(Filename:=PICTURE_PATH, _
                LinkToFile:=msoFalse, SaveWithDocument:=msoTrue)
            objShape.Name = PICTURE_NEW_NAME
        End With
    Next
    Set objShape = Nothing
End Sub

Dieser Code ersetzt das Logo in jedem Arbeitsblatt durch das neue Bild unter dem angegebenen Pfad. Der Name des Logos bleibt "Logo".


Häufige Fehler und Lösungen

  • Fehler: "Argument ist nicht optional!"

    • Lösung: Stelle sicher, dass alle benötigten Argumente in den Methoden korrekt angegeben sind. Überprüfe besonders die AddPicture Methode, um sicherzustellen, dass du alle erforderlichen Parameter angibst.
  • Fehler: Das Logo wird nicht angezeigt.

    • Lösung: Überprüfe den Pfad des Bildes, um sicherzustellen, dass die Datei tatsächlich an dem angegebenen Ort vorhanden ist.

Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du das Excel-Logo auch manuell ersetzen:

  1. Markiere das bestehende Logo in deinem Arbeitsblatt.
  2. Drücke die "Entf"-Taste, um das alte Logo zu löschen.
  3. Gehe zu "Einfügen" > "Bilder" und wähle dein neues Logo aus.

Diese Methode ist zwar zeitaufwändiger, eignet sich jedoch gut für gelegentliche Änderungen.


Praktische Beispiele

Ein Beispiel für die Anwendung des VBA-Codes könnte wie folgt aussehen: Du hast ein Logo in mehreren Arbeitsblättern, das ersetzt werden muss, weil sich das Design geändert hat. Nutze den oben genannten Code, um den Austausch effizient zu gestalten.

Ein weiteres Beispiel ist das Anpassen des Codes für verschiedene Logo-Formate. Wenn dein Logo eine andere Dateiendung hat, passe den PICTURE_PATH entsprechend an.


Tipps für Profis

  • Verwende Modularisierung in deinem VBA-Code, indem du Funktionen für das Löschen und Hinzufügen von Logos erstellst. Dies verbessert die Lesbarkeit und Wartbarkeit des Codes.
  • Experimentiere mit dem VBA-Editor, um das Verhalten deines Codes in Echtzeit zu testen. Nutze die "Schritt-für-Schritt"-Ausführung, um Fehler schnell zu finden.

FAQ: Häufige Fragen

1. Kann ich den Code auch für andere Formen verwenden? Ja, du kannst den Code anpassen, um andere Shapes zu ersetzen, indem du die Bedingungen im Code änderst.

2. Funktioniert dieser Code in allen Excel-Versionen? Der VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, aber es ist immer eine gute Idee, dies vorher zu testen, insbesondere in älteren Versionen.

3. Wie kann ich den Pfad des Logos dynamisch machen? Du kannst den Benutzer auffordern, den Pfad über ein Eingabefeld einzugeben, indem du die InputBox-Funktion verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige