Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Bilder mittels Steuerelement einfügen
#11
Hallo Chris,

da hätte ich erst mal noch ein paar Fragen.

1. Warum willst Du denn den Katalog ausblenden? Da sind ja auch Schaltflächen drin, die kannst Du dann nicht benutzen.
2. Was hat man denn davon, wenn die Bilder in ein ausgeblendetes Tabellenblatt kommen - da sieht man sie doch nicht?
3. Woher soll denn der code wissen, wo das Bild in deinem ausgeblendeten Katalog hin soll?
4. Mit Deinem code lädst Du ein Bild aus einer Datei. Du hast am Anfang aber geschrieben, dass Du es aus dem Blatt "Bilder" in den Katalog holst
5. Warum fügst Du das Bild in das Steuerelement ein und nicht gleich in den Katalog?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#12
Hallo André,

Zu deinen Fragen:
1. Den Katalog will ich nicht ausblenden, ich will das Tabellenblatt Bilder ausblenden, da dies nur der allgemeine Speicher mit der Zuordnung der Nummerierung zum Katalog ist.
Der Katalog holt sich die Bilder quasi aus diesem Tabellenblatt.
2. Weil (wie in Punkt 1 beschrieben) dieses Tabellenblatt "Bilder" lediglich als Speicher dienen soll
3. und 4. Im Tabellenblatt "Fabrikate" soll das Bild nach Eingabe eines neuen Produktes vom Explorer geladen werden. Der Code den ich brauche, soll das geladene Bild im Speicher (Tabellenblatt "Bilder") einfügen, damit die Zuordnung im Katalog mit der Nummerierung der Produkte zusammenstimmt. 
5. Weil das der Sinn dieser Liste ist. Der Katalog soll als Datenbank dienen. D.h. Wenn ein neues Produkt eingetragen wird, dann wird auch ein neues Bild eingefügt. Die Datei wird im Anschluss wieder abgespeichert und das zuvor eingegebene Produkt kann von anderen Usern im Katalog ausgewählt werden.

Ziemlich kompliziert zu erklären. Wenn das nicht lösbar ist, hab ich auch kein Problem, dann bleibt der Katalog eben so wie er ist.

LG und Danke! 
Antworten Top
#13
Hallo Chris,

es ist trotzdem noch nicht ganz klar. Wo ist denn das Bilder-Steuerelement für den Import enthalten? Im Blatt Fabrikate ist es nicht. Im Katalog wolltest Du ja ein Bild aus dem Blatt Bilder einfügen, da ist es also schon in der Datei drin und braucht nicht mehr importiert zu werden.

Wie viele Bilder-Steuerelemente verwendest Du denn dann, wenn die Bilder in die Steuerelemente sollen und nicht direkt in die Datei?
Wofür sie unbedingt in Steuerelemente sollen, erschließt sich mir auch noch nicht.

Beschreibe doch einfach mal schrittweise, wie Du das Ding handelst bzw. was genau passieren soll.
z.B.
Bild importieren
Du öffnest die Datei, gehst auf das Blatt xxx, drückst die Schaltfläche yyy, ein Dialog für irgendwas geht auf, du wählst eine Bilderdatei vom Speichermedium aus, auf dem Blatt zzz wird ein neues Bildersteuerelement erzeugt und das Bild darin eingefügt....
ET_Katalog erweitern
Du gehst auf das Blatt ET_Katalog, gibst eine neue Positionsnummer ein, gibst in Spalte B einen Bildernamen ein, danach wird automatisch ein Bild aus dem Blatt Bilder geladen, ...
usw.

Gleich noch ein Hinweis zum Positionieren und Skalieren.
Eine Zelle hat die Eigenschaften Top und Left sowie With und Height, ebenso in Bild. Der Rest ist Mathematik Wink Du gibst beim Bild bei Top und Left 1 dazu, und ziehst dafür bei Width und Height 2 ab.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#14
Also jetzt nochmal ganz im Detail und schrittweise:

Es gibt 4 Tabellenblätter:
1.ET_KATALOG:
In diesem Tabellenblatt wird im Dropdown (zwischen Spalte F und G) ein Gewerk ausgewählt (AAA; BBB; CCC; DDD oder EEE)
Danach wird in Spalte B (Fabrikat/Bild) Der Hersteller gewählt (AA; BB; CC; DD; EE), danach wird in Spalte C das Produkt des jeweiligen Herstellers gewählt (AA1; BB1;...) - das alles via Dropdown Menüs.
Der Rest des Produktes (Beschreibung, Type, usw.) wird automatisch via SVerweise auf das Tabellenblatt "2.FABRIKATE" ausgefüllt.
Die Bilder (in Spalte B) sind verknüpft mit dem Tabellenblatt "Bilder" und "2.FABRIKATE" Die genaue Zuordnung dieser Bilder erfolgt über die Nummerierung die in Spalte G steht (Wert 1 = Bild 1 - in Zeile 1 vom Tabellenblatt "Bilder", usw...)
Somit wäre eine ProduktAUSWAHL im Katalog abgeschlossen.

2.FABRIKATE:
Dieses Tabellenblatt benötigt man erst dann, wenn man ein neues Produkt dem Katalog hinzufügen möchte. Hier ein Beispiel:
Beim Hersteller AA wird ein neues Produkt mit dem Namen AA2 eingefügt. Der Wert AA2 (die Produktbeschreibung) wird in Spalte A eingegeben, die Type dieses Produktes (AA2.1) in Spalte C. Daraufhin wird durch ein Makro in Spalte D die nächst höhere Nummer eingegeben. (in diesem Fall der Wert 26) Diese Zahl stellt den Bezug zum Bild im Tabellenblatt "Bilder" her. Folglich befindet sich das Bild zu diesem Produkt in Zeile A26 im Tabellenblatt "Bilder" und muss dort auch irgendwie eingefügt werden. Diesen Schritt hätte ich nun gerne mittels Steuerelement "Bild" (dieses befindet sich noch nicht im Tabellenblatt) damit ich nicht im Tabellenblatt "Bilder" ganz nach unten scrollen muss und mir die passende Zeile (A26) zu suchen, möchte ich das automatisieren. Wenn ich also ein Bild dem Produkt mit der Nummer 26 einfügen will dann soll das über das Steuerelement geladen werden können und dann mittels Schaltfläche genau in die Zeile A26 im Tabellenblatt "Bilder" hüpfen.

4.HERSTELLERLISTE:
Dieses Tabellenblatt ist für unseren Sachverhalt unrelevant. Hier kann ein neuer Hersteller bzw. ein neues Gewerk hinzugefügt werden.

Etwas klarer geworden?

LG
Antworten Top
#15
Zitat:Die genaue Zuordnung dieser Bilder erfolgt über die Nummerierung die in Spalte G steht
So hier nochmal der Musterkatalog, Die Formel in Spalte G ist mir zuvor irgendwie entwischt.
LG


Angehängte Dateien
.xlsm   Musterkatalog1.xlsm (Größe: 208,6 KB / Downloads: 11)
Antworten Top
#16
Hallo Chris,

hier mal ein code zum Einfügen von Bildern auf das Bilder-Blatt. Der code ist auf Basis von Deinem angepasst. Damit das funktioniert, habe ich in Spalte B noch die Bildbezeichnung eingetragen, wo schon Bilder drin waren (Grafik 1 bis 5) - müsstest Du bei Dir nachholen. Mit dem code wird dann geprüft, wo der letzte Eintrag ist und dann in die nächste Zeile das gewählte Bild eingefügt, umbenannt und der Namenseintrag daneben geschrieben. Und ich habe hier, wie gesagt, kein Steuerelement. Die Skalierung und Positionierung fehlt noch - schau erst mal, ob das mit dem Einfügen in Deinem Sinne ist.

Es wäre auch vorteilhaft, hier noch den "Namen" für den Bezug anzulegen. Du hast ja im Moment eine ganze Menge vorgetragen. Das bräuchtest Du dann nicht.

Code:
Private Sub Insert_Image()
    Dim fd As FileDialog
    Dim Pfad As String
    Dim chosenFile As String
    Pfad = "C:\Test\"
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
        .AllowMultiSelect = False
        .InitialFileName = Pfad
        .Filters.Add "Bilddateien", "*.png"
        If .Show = -1 Then
            chosenFile = .SelectedItems(1)
             'mit dem Blatt "Bilder"
             With Sheets("Bilder")
                'Zelle in Spalte A unter Zelle mit letztem Eintrag in Spalte B aktivieren
                Cells(Cells(Rows.Count, 2).End(xlUp).Row + 1, 1).Activate
                'Bild einfuegen und selektieren
                ActiveSheet.Pictures.Insert(chosenFile).Select
                'Bild umbenennen
                Selection.Name = "Grafik " & Cells(Rows.Count, 2).End(xlUp).Row + 1
                'hier noch ausrichten und skalieren programmieren
                '...
                'neben dem Bild den Name eintragen
                ActiveCell.Offset(0, 1).Value = "Grafik " & ActiveCell.Row
             'Ende mit dem Blatt "Bilder"
             End With
'            With Me.Image1
'                .PictureSizeMode = fmPictureSizeModeStretch
'                .Picture = LoadPicture(chosenFile)
'            End With
        End If
    End With
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#17
Zitat:Und ich habe hier, wie gesagt, kein Steuerelement. Die Skalierung und Positionierung fehlt noch
Hallo André,
Und wie fügst du das Bild ein? Stehe nun irgendwie auf dem Schlauch...
:(
LG Chris
Antworten Top
#18
Hallo Chris,

da nimmst Du einfach eine Schaltfläche, z.B. die, wo "Bilder" drauf steht? Übrigens geht mein code davon aus, dass Du die Bilder schön der Reihe nach einfügst - also musst Du vor dem Bild 26 die anderen 25 schon drin haben. Ansonsten muss man noch eine Abfraqe rein programmieren, welche Nummer es sein soll und eine Prüfung, ob Du ein eventuell unter dieser Nummer bereits vorhandenes Bild ersetzen willst.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#19
OK also das funktioniert ja super. Besten Dank schon mal.
Bzgl. Skalierung und Positionierung: Die Bilder sollten etwas kleiner als die Zelle in Spalte A sein (so wie in meiner Mappe Bild 1 bis 5) Wie realisieren wir das nun?

Es gibt auch noch ein Thema:
Die meisten Bilder sind im Querformat zum einfügen, es kann jedoch schon mal vorkommen das man Bilder im Hochformat einfügen muss.
Wie realisiert man das mit VBA?

Bin echt verblüfft was alles möglich ist. :)

LG
Antworten Top
#20
Hallo Chris,

Die Positionierung und Skalierung ist, wie ich schon schrieb, fast nur Mathematik. Wenn Du das Prinzip mathematisch beschreiben kannst, dann ist die Programmierung nur noch ein kleiner Schritt.

Dazu gibt es noch die Frage, ob das Seitenverhältnis der Bilder beibehalten werden soll oder verkleinert. Das hatte ich schon im Kommentar im code von Beitrag #8 drin, bei der Verkleinerung auf Zellgröße. Im letzten code von mir hab ich kein Target, jetzt geht es um die ActiveCell.

Im Beitrag #13 hab ich erklärt, wie man das Bild etwas kleiner und zentriert bekommt.

Wenn Du das Seitenverhältnis beibehalten willst, dann stellst Du z.B. erst mal die Breite ein.
Anschließend prüfst Du, was bei der Differenz der Höhe zur Zellhöhe rauskommt.

Ist die Höhe mindestens zwei kleiner als die Zellhöhe - um mal bei meinem Beispiel aus #13 zu bleiben, musst Du das Bild nur in der Höhe zentrieren. Der zum Top-Wert der Zelle zu verrechnende Wert wäre dann der halbe Differenzbetrag der Höhe.

Ist die Höhendifferenz kleiner als zwei oder das Bild in der Höhe sogar noch größer als die Zelle, musst Du nochmal skalieren.
Anschließend musst Du jedoch die Breitendifferenz ermitteln - das Bild ist ja durch das erneute Skalieren schmaler geworden und daher auch nicht mehr in der Mitte der Zelle. Von der Breitendifferenz musst Du die Hälfte mit dem Left-Wert der Zelle verrechnen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste