Office: (Office 2016) Bild mit Text aus Zelle verknüpfen

Helfe beim Thema Bild mit Text aus Zelle verknüpfen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hi Ralf, ich habe deine Mappe jetzt getestet und folgendes festgestellt: beim 2. Bild in Spalte C steht 3000 C-300365-2 - Twilight at Woodgreen Pond... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Elguano, 22. November 2021.

  1. Beverly
    Beverly Erfahrener User

    Bild mit Text aus Zelle verknüpfen


    Hi Ralf,

    ich habe deine Mappe jetzt getestet und folgendes festgestellt: beim 2. Bild in Spalte C steht
    3000 C-300365-2 - Twilight at Woodgreen Pond (CASTORLAND). Dort fehlt zwischen 3000 und C der - , stattdessen gibt es dort ein Leerzeichen, sodass das Tabellenblatt "3000 Cer" gesucht aber logischerweise nicht gefunden wird und deshalb ein Laufzeitfehler auslöst wird. Der Code ist nämlich so aufgebaut, dass er genau nach diesem ersten "-" sucht und die Zeichen links davon mit dem Zusatz "er" (also 3000er) als Ziel-Tabellennamen nimmt. Wenn man in der Zelle die Leerstelle durch - ersetzt werden alle Bilder übertragen.

    Frage: gibt es bei dir keinen Laufzeitfehler? Mir ist nämlich aufgefallen, dass es in der Ja/Nein-Liste noch weitere Bildnamen gibt, bei denen anstelle des "-" ein Leerzeichen steht.


    Bild mit Text aus Zelle verknüpfen GrußformelBild mit Text aus Zelle verknüpfen Beverly's Excel - Inn
     
  2. Elguano Erfahrener User
    Guten Tag Karin
    Ich kann es kaum Fassen. Dieser kleine blöde Strich hat den ganzen Wirbel verursacht!!! Einen Laufzeitfehler hat der Code am Ende auch bei mir angezeigt.
    Jetzt bin ich aber doch sehr Froh, dass ich auch dieses Bild mit in die Mini Datei aufgenommen habe. Hättest Du sonst auch nicht gefunden oder????? Ich jedenfalls habe das nicht gesehen, das der Strich fehlte.
    Alle anderen Texte haben nämlich diesen Strich hinter den Ziffern. Nur dieses eine Bild eben nicht.
    Hier ist es eben so, dass ich den Code und seinen Ablauf nicht Verstehe. Sonst hätte ich das eventuell auch gefunden.
    Was ich an Deinem Code rausgefunden hatte ist, dass Du für die Hochkantbilder eine Zeilenanzahl von 19 angegeben hast. Da hatte ich gesehen das eine Zeile unter dem Bild fehlte. Das konnte ich mit ändern auf 20 beheben. Aber auf diesen Schreibfehler meinerseits wäre ich nicht gekommen.
    Was mir aber auch nicht einleuchtet ist, warum dann Bilder die vor diesem Fehler stehen auch nicht übergeben wurden und Bilder die dahinter stehen wiederum doch.
    Kannst Du mir bitte schreiben in welcher Reihenfolge der Code abläuft?
    Fazit ist: Alle Texte und Bilder werden an die richtigen Blätter übergeben und läuft damit EINWANDFREI.
    Du hast mich sehr Glücklich gemacht. Deine Arbeit hilft mir sehr. Ich habe damit weniger Aufwand und spare sehr viel Zeit.

    Ich bedanke mich recht herzlich für Deine Unterstützung und Fühle Dich bitte lieb gedrückt und geküst. Spitzenmäßig gelöst.
    Danke, Danke
    Angenehme Woche und für den Fall das wir Uns vor dem Weihnachtsfest und Jahreswechsel nicht mehr schreiben (müssen) wünsche ich Dir ein Frohes Fest und einen guten Rutsch ins neue Jahr in dem Du hoffentlich vielen anderen Ratsuchenden helfen kannst.

    Schönen Dank nochmal
    Ralf B. aus B. an der E.
     
  3. Beverly
    Beverly Erfahrener User
    Hi Ralf,

    als generelle Vorgehensweise: wenn ein Code nicht das macht was er soll und man nicht weiss weshalb, aber besonders dann wenn ein Fehler auftritt, sollte man sich angewöhnenen, als erstes den Inhalt der verwendeten Variablen zu prüfen - und da ist mir eben aufgefallen, dass strTab bei einem Bild "3000 C" enthielt. Und richtig: hättest du dieses Bild nicht mit aufgenommen, hätte ich den Fehler nicht (zumindest nicht so schnell) finden können, weil kein Laufzeitfehler aufgetreten wäre.

    Dass bei dir einige Bilder vor diesem problematischen nicht übertragen wurden und dafür andere danach, liegt m.E. darin begründet, dass du sie wahrscheinlich nicht in der Reihenfolge in die Tabelle eingefügt hast, in der sie bei dir vorliegen. Beim Einfügen von Objekten vergibt Excel automatisch eine interne ID und bei einer Schleife über diese Objekte folgt Excel dann der fortlaufenden ID und nicht der Reihenfolge im Tabellenblatt.

    Ich hatte zuerst einfach nur ein Bild gedreht, um eins im Hochformat zu haben, aber da hat Excel mir einen Strich durch die Rechnung gemacht: Breite und Höhe werden dadurch nicht getauscht und alle Bilder entsprachen trotzdem der Bedingung Breite > Höhe, sodass ich die andere Bedingung nicht testen konnte. Also habe ich einfach eins genommen und von Hand annähernd höher gezogen und in der Breite verkleinert - diese Maße entsprachen dann offensichtlich nicht den tatsächlichen eines hochformatigen Bildes. Prima, dass du selbst herausgefunden hast, dass es + 20 und nicht + 19 heißen muss.

    Hier nochmal den Code mit Kommentaren, damit du besser verstehen kannst was wie abläuft:
    Code:
    Sub BilderEinfuegen()
        Dim lngLetzte As Long
        Dim shaShape As Shape
        Dim strTab As String
        Dim strName As String
        Dim rngSuche As Range
        Application.ScreenUpdating = False
        ' Schleife über alle Shapes
        For Each shaShape In Worksheets("ALLE PUZZLES").Shapes
            ' Name des Shapes <> Namen des Shapes das den Code gestartet hat (Schaltfläche)
            If shaShape.Name <> ActiveSheet.Shapes(Application.Caller).Name Then
                ' Zelle oberhalb des Shapes ist nicht leer, Bild liegt korrekt unterhalb
                If shaShape.TopLeftCell.Offset(-1, 0) <> "" Then
                    ' alle Zeichen von Links bis zum ersten "-" vom Zellinhalt oberhalb abtrennen
                    strTab = Left(shaShape.TopLeftCell.Offset(-1, 0), InStr(shaShape.TopLeftCell.Offset(-1, 0), "-") - 1)
                    ' Bildtext aus Zelle oberhalb des Shapes
                    strName = shaShape.TopLeftCell.Offset(-1, 0)
                ' Zelle oberhalb des Shapes ist leer, Bild liegt AUF der Zelle mit dem Namen
                Else
                    ' alle Zeichen von Links bis zum ersten "-" vom Inhalt der Zelle abtrennen, auf dem das Shape liegt
                    strTab = Left(shaShape.TopLeftCell, InStr(shaShape.TopLeftCell, "-") - 1)
                    ' Bildtext aus Zelle auf dem das Shape liegt
                    strName = shaShape.TopLeftCell
                End If
                ' Shape kopieren
                shaShape.Copy
                ' bezieht sich auf Tabelle mit dem Variableninhalt + "er"
                With Worksheets(strTab & "er")
                    ' suche den Variableninhalt (Bildtext)
                    Set rngSuche = .Columns(1).Find(strName, lookat:=xlWhole)
                    ' Variableninhalt nicht gefunden, deshalb Shape noch nicht kopiert
                    If rngSuche Is Nothing Then
                        ' letzte belegte Zeile in Spalte A
                        lngLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
                        ' letzte belegte Zeile in Spalte A ist nicht leer, deshalb muss der Abstand vom letzten
                        ' Bildtext festgelegt werden um das kopierte Shape und Bildtext richtig einfügen zu können
                        ' falls letzte belegte Zelle leer ist handelt es sich um Zeile 1, dann kein Abstand nötig
                        If .Cells(lngLetzte, 1) <> "" Then
                            ' Höhe des Shape < Breite (entspricht Querformat)
                            If .Shapes(.Shapes.Count).Height < .Shapes(.Shapes.Count).Width Then
                                ' neue Zeile für Bildtext muss letzte Zeile + 13 sein
                                lngLetzte = lngLetzte + 13
                            ' Höhe des Shape > Breite (Hochformat)
                            Else
                                ' neue Zeile für Bildtext muss letzte Zeile + 20 sein
                                lngLetzte = lngLetzte + 20
                            End If
                        End If
                        ' kopiertes Shape in ermittelte Zeile + 1 (Zeile unterhalb des nächsten Bildtextes) einfügen
                        .Cells(lngLetzte + 1, 1).PasteSpecial Paste:=xlAll
                        ' Bildtext in ermittelte Zeile einfügen
                        .Cells(lngLetzte, 1) = strName
                    End If
                End With
                ' Zelle oberhalb des Shapes ist nicht leer, Bild liegt korrekt unterhalb
                If shaShape.TopLeftCell.Offset(-1, 0) <> "" Then
                    ' alle Zeichen ab "(" vom Zellinhalt oberhalb des Shape
                    strTab = Mid(shaShape.TopLeftCell.Offset(-1, 0), InStr(shaShape.TopLeftCell.Offset(-1, 0), "(") + 1)
                ' Zelle oberhalb des Shapes ist leer, Bild liegt AUF der Zelle mit dem Namen
                Else
                    ' alle Zeichen ab "(" vom Inhalt der Zelle abtrennen, auf der das Shape liegt
                    strTab = Mid(shaShape.TopLeftCell, InStr(shaShape.TopLeftCell, "(") + 1)
                End If
                ' das Zeichen ")" am Ende des Bildtextes noch abtrennen
                strTab = Application.Substitute(strTab, ")", "")
                ' bezieht sich auf das Tabellenblatt mit dem Variableninhalt
                With Worksheets(strTab)
                    ' suche den Variableninhalt (Bildtext)
                    Set rngSuche = .Columns(1).Find(strName, lookat:=xlWhole)
                    ' Variableninhalt nicht gefunden, deshalb Shape noch nicht kopiert
                    If rngSuche Is Nothing Then
                        ' letzte belegte Zeile in Spalte A
                        lngLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
                        ' letzte belegte Zeile in Spalte A ist nicht leer, deshalb muss der Abstand vom letzten
                        ' Bildtext festgelegt werden um das kopierte Shape und Bildtext richtig einfügen zu können
                        ' falls letzte belegte Zelle leer ist handelt es sich um Zeile 1, dann kein Abstand nötig
                        If .Cells(lngLetzte, 1) <> "" Then
                            ' Höhe des Shape < Breite (entspricht Querformat)
                            If .Shapes(.Shapes.Count).Height < .Shapes(.Shapes.Count).Width Then
                                ' neue Zeile für Bildtext muss letzte Zeile + 13 sein
                                lngLetzte = lngLetzte + 13
                            Else
                                ' neue Zeile für Bildtext muss letzte Zeile + 20 sein
                                lngLetzte = lngLetzte + 20
                            End If
                        End If
                        ' kopiertes Shape in ermittelte Zeile + 1 (Zeile unterhalb des nächsten Bildtextes) einfügen
                        .Cells(lngLetzte + 1, 1).PasteSpecial Paste:=xlAll
                        ' Bildtext in ermittelte Zeile einfügen
                        .Cells(lngLetzte, 1) = strName
                    End If
                End With
            End If
        Next shaShape
        Application.ScreenUpdating = True
    End Sub
    

    Bild mit Text aus Zelle verknüpfen GrußformelBild mit Text aus Zelle verknüpfen Beverly's Excel - Inn
     
    1 Person gefällt das.
  4. Elguano Erfahrener User

    Bild mit Text aus Zelle verknüpfen

    Guten Tag Karin
    Vielen Dank für diese Erklärung im Code.
    Das hilft mir diesen Code zu Verstehen. Macht mich aber leider nicht zu einem VBA Liebhaber. Der nächste Code wird für mich wieder ein Rätsel sein.
    Für dieses Thema bin ich aber voll und ganz zufrieden.
    Vielen Dank für Deine freundliche und Kompetente Hilfe. Note: 1A*

    Mit freundlichen Grüßen
    Ralf B. aus B. an der E.
     
Thema:

Bild mit Text aus Zelle verknüpfen

Die Seite wird geladen...
  1. Bild mit Text aus Zelle verknüpfen - Similar Threads - Bild Text Zelle

  2. Eingefügtes Bild in einer Tabelle verschiebt den Text

    in Microsoft Word Hilfe
    Eingefügtes Bild in einer Tabelle verschiebt den Text: Guten Abend, ich habe eine Tabelle, die aus einem einzigen Feld besteht und in diesem Feld steht ein Zahl. Die Tabelle hat das Layout, dass der Text "zentriert ausgerichtet" ist. Die Zahl...
  3. Video: Umbrechen von Text um Bilder

    in Microsoft Excel Tutorials
    Video: Umbrechen von Text um Bilder: Video: Umbrechen von Text um Bilder Excel für Microsoft 365 Word für Microsoft 365 Outlook für Microsoft 365 PowerPoint für Microsoft 365 Excel 2019...
  4. Eingebettete Bilder in E-Mails oder Feldern im Rich-Text-Format werden ausgeblendet oder ...

    in Microsoft Outlook Tutorials
    Eingebettete Bilder in E-Mails oder Feldern im Rich-Text-Format werden ausgeblendet oder ...: Eingebettete Bilder in E-Mails oder Feldern im Rich-Text-Format werden ausgeblendet oder falsch ausgerichtet Outlook für Microsoft 365 Mehr... Weniger...
  5. Umbrechen von Text und Verschieben von Bildern in Word

    in Microsoft Word Tutorials
    Umbrechen von Text und Verschieben von Bildern in Word: Umbrechen von Text und Verschieben von Bildern in Word Word für Microsoft 365 Word für das Web Word 2019 Word 2016 Word 2013 Mehr... Weniger...
  6. Einfügen von gescanntem Text oder Bildern in Word

    in Microsoft Word Tutorials
    Einfügen von gescanntem Text oder Bildern in Word: Einfügen von gescanntem Text oder Bildern in Word Word für Microsoft 365 Word 2019 Word 2016 Word 2013 Mehr... Weniger...
  7. Schräger Text - siehe Bild

    in Microsoft PowerPoint Hilfe
    Schräger Text - siehe Bild: Hallo zusammen, [ATTACH] ich möchte einen ähnlichen Effekt erzielen, wie in Indesign, siehe Bild. Text soll schräg nach oben laufen, vorne aber vertikal ausgerichtet sein. Ich möchte...
  8. Text umd das Bild fließen lassen PowerPoint Mac 2011

    in Microsoft PowerPoint Hilfe
    Text umd das Bild fließen lassen PowerPoint Mac 2011: Hallöle :) ich muss ein Poster erstellen! Die Basis für mein Poster ist gelegt! Damit habe ich auch kein Problem. Ich scheitere jedes Mal beim Einfügen des Bildes! Ich möchte meinen Text...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden