Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bilder dynamisch aus Ordner

Bilder dynamisch aus Ordner
15.06.2019 11:53:58
Hopps
Hallo,
ich hatte versucht Bilder dynamisch per DropDown auswählbar zu machen. Leider scheitert es an der Menge der Daten (Bilder 1480, Zeichnungen 1300 als jpeg).
Daher kann wohl nur ein Makro helfen?
Bei Auswahl in C2 sollen die Bilder (linkes Rechteck) und die Zeichnungen (rechtes) geladen werden, wenn gewünscht (Auswahl in C44 und C46).
Diese sind im gleichen Ordner (C:\....\Beispiel\Bilder und \Beispiel\Zeichnungen)
und haben die Nummer aus C2 als Bild- und Zeichnungsnummer. Einige Bilder und Zeichnungen fehleen allerdings.
Problem:
1. Das Makro müsste auf allen Excelversionen laufen können (ab 2003) und auch auf 32 oder 64 Bit.
2. Die Datei sammt Bilder und Zeichnungsorder sollen per Stick weitergeben werden und da ist die Frage wegen des Laufwerksbuchstabens. Denn der kann ja bei jedem unterschiedlich sein...
Hatte schon im Netz gesucht, jedoch nix passendes gefunden. Einmal wurden alle Bilder übereinander gelegt (das alte wurde nicht gelöscht) und bei anderen hing sich mein Rechner auf (Excel 2007)
Ich wäre Euch sehr dankbar, wenn Ihr mir da helfen könntet.
https://www.herber.de/bbs/user/130408.xls
Mit dankbaren Grüßen
Hopps
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bilder dynamisch aus Ordner
15.06.2019 11:57:56
Hajo_Zi
schaue hier http://hajo-excel.de/inhalt_vba_bild.htm

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
leider nix dabei...
15.06.2019 12:55:43
Hopps
...hatte ich gestern schon alles mal angeschaut und zum Anpassen an meine Bedürfnisse bin ich leider zu doof.
Trotzdem Danke! ;-)
Hopps
Schöner Auftrag-na denn-viel Glück..owT
15.06.2019 13:13:15
robert
AW: Bilder dynamisch aus Ordner
15.06.2019 14:02:37
Daniel
Hi
im prinzip so:
die Bilder und Zeichnungen müssen sich in eigenen Unterverzeichnissen des Ordners befinden, in welchem auch die Hauptdatei liegt.
hier mal für die Bilder, den Code für die Zeichnungen kannst du dann ja einfach mit geänderten Zielzellen ergänzen.
Code muss ins Modul des Eingabeblattes:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Dateiname As String
Pfad As String
If Not Intersect(Target, Range("C2,C44,C46")) Is Nothing Then
ActiveSheet.DrawingObjects.Delete
'--- Bild einfügen
If Range("C44") = "ja" Then
Pfad = ThisWorkbook.Path & "\Unterordner für Bilder\"
Dateiname = Dir(Pfad & "*" & Range("C2").Value & "*")
If Dateiname  "" Then
ActiveSheet.Pictures.Insert(Pfad & Dateiname).Select
With Selection
.Top = Rows(24).Top
.Left = Columns(4).Left + Columns(4).Width / 2
If .Height > .Width Then
.Height = 154.5
Else
.Width = 154.5
End If
End With
End If
End If
'--- Zeichnung einfügen
If Range("C46") = "ja" Then
'--- genauso wie Bild einfügen mit angepassten Dateinamen und Zielzellen
End If
End If
End Sub

Gruß Daniel
Anzeige
AW: Bilder dynamisch aus Ordner
15.06.2019 16:12:56
Hopps
Hallo Daniel,
vielen vielen Dank für die kompetente Hilfe.
Musste vor Pfad noch ein Dim setzen (google half dabei)und dann lief es bestens.
Kann man jedoch die Bildgrößen erzwingen (also immer 150 x 150 Pixel z.B.)?
Mit dankbaren Grüßen
Hopps
AW: Bilder dynamisch aus Ordner
15.06.2019 16:36:44
Daniel
naja, mach ich doch, sind halt 154,5 statt 150 (das war die Größe deines Rahmens)
wenn man die entsprechende Einstellung nicht ändert, dann wird bei Änderung der Höhe ODER Breite der andere Wert auch angepasst so dass das Höhen/Breitenverhältnis erhalten bleibt.
wenn das ganze auch auf 2003 laufen soll, würde ich dir empfehlen, dir auch diese Version zuzulegen um den Code auch dort testen zu können.
2007 hat außerdem den Nachteil, dass MS den Makrorecorder nicht an alle Neuerungen angepasst hat und dieser viele Aktionen, insbesondere im Grafikbereich einfach nicht aufzeichnet.
Gruß Daniel
Anzeige
Vielen vielen Dank, Daniel!
16.06.2019 09:48:27
Hopps
Hallo Daniel,
hab die Nacht den Rechner mit Office2003 flott gemacht und es läuft alles bestens.
Mit einigen Schönheitsfehlern (Farben und Bildgröße in 2003 ist kleiner und wird nicht quadratisch gemacht), aber damit kann ich sehr gut leben.
Ich musste dann noch in
Dateiname = Dir(Pfad & "*" & Range("C2").Value & "*")

das erste * rausnehmen, denn er fand bei Nr 32, die 1032. Is nun auch behoben.
Vielen vielen Dank nochmals für Deine Hilfe.
Mit dankbaren Grüßen
Hopps
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bilder dynamisch aus Ordner einfügen in Excel


Schritt-für-Schritt-Anleitung

Um Bilder dynamisch aus einem Ordner in Excel einzufügen, kannst Du VBA (Visual Basic for Applications) verwenden. Hier sind die Schritte, um dies zu erreichen:

  1. Aktiviere die Entwicklertools in Excel:

    • Gehe zu „Datei“ > „Optionen“ > „Menüband anpassen“ und aktiviere das Kontrollkästchen für „Entwicklertools“.
  2. Erstelle ein neues Modul:

    • Klicke auf „Entwicklertools“ > „Visual Basic“.
    • Im VBA-Editor, klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.
  3. Füge den folgenden Code ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim Dateiname As String
       Dim Pfad As String
       If Not Intersect(Target, Range("C2,C44,C46")) Is Nothing Then
           ActiveSheet.DrawingObjects.Delete
           '--- Bild einfügen
           If Range("C44") = "ja" Then
               Pfad = ThisWorkbook.Path & "\Unterordner für Bilder\"
               Dateiname = Dir(Pfad & "*" & Range("C2").Value & "*")
               If Dateiname <> "" Then
                   ActiveSheet.Pictures.Insert(Pfad & Dateiname).Select
                   With Selection
                       .Top = Rows(24).Top
                       .Left = Columns(4).Left + Columns(4).Width / 2
                       If .Height > .Width Then
                           .Height = 154.5
                       Else
                           .Width = 154.5
                       End If
                   End With
               End If
           End If
           '--- Zeichnung einfügen (analog)
       End If
    End Sub
  4. Passen die Zellreferenzen an: Stelle sicher, dass die Zellreferenzen (C2, C44, C46) mit Deinen Anforderungen übereinstimmen.

  5. Teste das Makro: Wähle in Zelle C2 eine Bildnummer aus und setze C44 auf „ja“. Das Bild sollte nun automatisch eingefügt werden.


Häufige Fehler und Lösungen

  • Problem: Bilder werden übereinander gelegt.

    • Lösung: Stelle sicher, dass ActiveSheet.DrawingObjects.Delete vor dem Einfügen des neuen Bildes aufgerufen wird, um alte Bilder zu entfernen.
  • Problem: Das Bild wird nicht gefunden.

    • Lösung: Prüfe, ob der Pfad zu den Bildern korrekt ist und dass die Bildnummer in C2 mit dem Dateinamen übereinstimmt.
  • Problem: Das Makro läuft nicht in Excel 2003.

    • Lösung: Vergewissere Dich, dass alle verwendeten Funktionen auch in dieser Version unterstützt werden.

Alternative Methoden

  • Excel-Formeln: Du kannst auch die HYPERLINK-Funktion verwenden, um Bilder als Links einzufügen, allerdings wird das Bild nicht direkt angezeigt.

  • Power Query: Eine weitere Methode ist die Verwendung von Power Query, um Bilder aus einem Ordner zu importieren, jedoch ist dies komplexer und weniger dynamisch.


Praktische Beispiele

  • Beispiel für dynamisches Bild: Wenn Du eine Liste von Bildnummern in Spalte A hast und in Spalte B das Bild angezeigt werden soll, kannst Du die obige VBA-Prozedur anpassen, um die Bildnummer aus Spalte A zu ziehen.

  • Verwendung von Dropdowns: Du kannst ein Dropdown-Menü in Zelle C2 einfügen, um die Auswahl der Bildnummer zu vereinfachen.


Tipps für Profis

  • Dynamisches Laufwerk: Um den Laufwerksbuchstaben zu vermeiden, kannst Du ThisWorkbook.Path verwenden, um den Pfad unabhängig vom Laufwerk zu definieren.

  • Bildgröße anpassen: Wenn Du die Bildgröße anpassen möchtest, ändere die .Height und .Width Werte im Code, um die gewünschten Pixelmaße zu erreichen.

  • HTML Bildgröße dynamisch anpassen: Wenn Du die Größe eines Bildes in einer HTML-Anwendung anpassen musst, kannst Du CSS verwenden, um die Größe dynamisch zu verändern.


FAQ: Häufige Fragen

1. Wie funktioniert das Einfügen von Bildern automatisch in Excel? Das Einfügen von Bildern erfolgt durch ein VBA-Makro, das auf Änderungen in bestimmten Zellen reagiert und das entsprechende Bild aus einem vordefinierten Ordner lädt.

2. Kann ich das Makro auf verschiedenen Excel-Versionen verwenden? Ja, das Makro sollte ab Excel 2003 in allen Versionen funktionieren, solange keine spezifischen Funktionen verwendet werden, die in älteren Versionen nicht unterstützt werden.

3. Was mache ich, wenn ich die Bilder nicht sehe? Überprüfe den Pfad zu den Bildern und stelle sicher, dass die Dateinamen korrekt sind. Achte auch darauf, dass die Bilddateien im richtigen Format vorliegen (z.B. JPEG).

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