Bildnamen auslesen und Bilder drehen in Excel
Schritt-für-Schritt-Anleitung
Um die Namen von Bildern in einer Excel-Tabelle auszulesen und die Bilder zu drehen, kannst Du folgendes VBA-Makro verwenden. Es ermöglicht Dir, die Zeile über eine Inputbox anzugeben.
-
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Klicke auf Einfügen
und dann auf Modul
, um ein neues Modul zu erstellen.
-
Füge den folgenden Code ein:
Sub Linksherum_Klick()
Dim wks_Re As Worksheet
Dim objShp As Shape
Dim i As Long
Set wks_Re = ThisWorkbook.Worksheets("Newsletter")
i = InputBox("Welche Zeile?", "Zeile")
For Each objShp In ActiveSheet.Shapes
If objShp.TopLeftCell.Row = i Then
objShp.Rotation = objShp.Rotation - 90
objShp.Left = Columns(9).Left
objShp.Top = Rows(i).Top: Exit For
End If
Next objShp
End Sub
-
Schließe den VBA-Editor und kehre zu Excel zurück.
-
Führe das Makro aus, indem Du ALT + F8
drückst und Linksherum_Klick
auswählst.
Häufige Fehler und Lösungen
-
Fehler: "Objektvariable nicht gesetzt"
- Lösung: Stelle sicher, dass Du die richtige Arbeitsblattanzeige verwendest und dass das Arbeitsblatt "Newsletter" existiert.
-
Fehler: Bild wird nicht gedreht
- Lösung: Überprüfe, ob das Bild tatsächlich in der angegebenen Zeile ist.
-
Bildposition ist nicht korrekt
- Lösung: Ändere die Zuweisung von
objShp.Top
und objShp.Left
, um die Position an die Zelle anzupassen.
Alternative Methoden
Eine alternative Methode, um mehrere Bilder auszulesen, ist die Nutzung einer Schleife, die alle Shapes in einem Arbeitsblatt durchläuft. Hier ist ein Beispiel:
Sub sh_name()
Dim Sh As Shape
Dim Pi(2) As String
Dim i As Integer
i = 0
For Each Sh In ActiveSheet.Shapes
If InStr(1, Sh.Name, "Pict") > 0 Then
Pi(i) = Sh.Name
i = i + 1
End If
Next Sh
ActiveSheet.Shapes.Range(Pi).Select
Selection.Copy
Sheets("Tabelle2").Paste
End Sub
Diese Methode hilft, mehrere Bilder gleichzeitig zu kopieren und in ein anderes Arbeitsblatt einzufügen.
Praktische Beispiele
Wenn Du das Bild in der oberen rechten Ecke einer Zelle ausrichten möchtest, kannst Du den Code wie folgt anpassen:
Sub Linksherum_Klick()
Dim wks_Re As Worksheet
Dim objShp As Shape
Dim i As Long
Set wks_Re = ThisWorkbook.Worksheets("Newsletter")
i = InputBox("Welche Zeile?", "Zeile")
For Each objShp In ActiveSheet.Shapes
If objShp.TopLeftCell.Row = i Then
objShp.Rotation = objShp.Rotation - 90
objShp.Left = Cells(i, 9).Offset(0, -1).Left + Cells(i, 9).Width - objShp.Width
objShp.Top = Rows(i).Top
Exit For
End If
Next objShp
End Sub
Dieses Beispiel stellt sicher, dass das Bild an der rechten oberen Ecke der Zelle ausgerichtet wird.
Tipps für Profis
- Verwende benannte Bereiche: Wenn Du regelmäßig mit bestimmten Bildbereichen arbeitest, kann es hilfreich sein, benannte Bereiche zu verwenden, um die Wartung des Codes zu erleichtern.
- Fehlerbehandlung hinzufügen: Implementiere Fehlerbehandlungsroutinen, um Probleme während der Codeausführung zu identifizieren und zu lösen.
- Makros dokumentieren: Halte eine Dokumentation über Deine Makros, um die Nachvollziehbarkeit und Wartbarkeit zu verbessern.
FAQ: Häufige Fragen
1. Kann ich die Bilder in eine andere Arbeitsmappe kopieren?
Ja, Du kannst die Shapes in eine andere Arbeitsmappe kopieren, indem Du das Zielarbeitsblatt in Deinem Code angibst.
2. Was mache ich, wenn die Inputbox nicht angezeigt wird?
Stelle sicher, dass Du das Makro korrekt ausführst. Manchmal kann es an den Excel-Einstellungen liegen, die Makros blockieren.
3. Ist dieser Code in Excel 365 kompatibel?
Ja, der Code sollte in Excel 365 sowie in anderen Versionen von Excel funktionieren, die VBA unterstützen.