Hallo zusammen, ich habe mir eine Datei gebastelt, die alle Bilder des Verzeichnisses, in dem es liegt, als Bildergalerie auflistet. Das funktioniert ganz gut.
Wenn ich die Datei auf ein Sharepoint-Verzeichnis lade und dann in Tabelle "Konfig" einen ReStart durchführe, werden auch alle Bilder mit korrekten Links eingefügt. Wenn ich dann die Datei auf meine Fetplatte irgendwo hin kopiere oder per Email verschicke, sind die Bilder bei nächsten Öffnen nicht mehr zu sehen. Nur Platzhalter werden angezeigt. Die hinterlegten Links gehen weiterhin korrekt, aber warum werden die Bilder nicht korrekt angezeigt ???
Sicher könnt ihr euch nicht vorstellen, was ich meine. Deshalb dieser Screenshot. Die Links unter dem Bild als Schrift und auch die Links der Bilder funktionieren, also laden das Bild korrekt im zugeordnetem Bildbetrachter meines Rechners. Nur die Bilder werden durch Excel nicht angezeigt.
Grüsse
"Nur vom Geben wird man reich!" Gerhard Schöne in "Spar deinen Wein nicht auf für morgen"
hast Du mal einen der Links zu den Bildern aus Sharepoint im Browser aufgerufen? Könnte ja vielleicht sein, dass Excel auf die Webadressen nicht zugreifen kann, da diese eine Anmeldung erfordern.
Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards https://de.excel-translator.de/translator:: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Solange die Datei im gleichen Verzeichnis auf dem Sharepoint liegt, funktioniert alles. Kopiere ich sie auf die Festplatte, werden die Bilder nicht mehr gezeigt. Die Links funktionieren, was auf gültige Rechte schliessen läßt.
Code:
Set pic = ActiveSheet.Pictures.Insert(withSlash(Pfad) & MyArray(i)) 'Bild einfügen With pic .ShapeRange.LockAspectRatio = msoTrue 'Seitenverhältnis des Bildes beibehalten If .Width > .Height Then .Width = CellW - 8 Else .Height = CellH - 8 'Bild-Größe der Zellgröße anpassen End If .Top = .Top + 4 '4 Pixel unter dem oberen Rand der Zelle .Left = Cells(rr, cc).Left + 4 '4 Pixel links neben dem linken Rand der Zelle Temp = .ShapeRange.Name 'um später das richtige Bild zu markieren, bevor der Link gesetzt wird End With If Sheets("Konfig").Cells(5, 5) = "Ja" Then 'Bild soll mit Link auf das Original verweisen: Sheets("Foto-Viewer").Shapes.Range(Array(Temp)).Select Set myLink = ActiveSheet.Hyperlinks.Add(Anchor:=Selection.ShapeRange.Item(1), _ Address:=withSlash(MyFolder) & MyArray(i)) End If
Wenn ich wie im Makro Bilder einfüge, wird nur der Link zum Bild in die Datei kopiert.
Doch hier wird das Bild komplett in die Datei kopiert und so kann das Bild auf ganz anderen Rechnern ohne Online-Verbindung angezeigt werden. Wenn ich die Datei umbenenne auf *.zip und öffne das Archiv, dann sehe ich (nach der händischen Variante) eingefügte Dateien im Verzeichnis ...\xl\media\ als originale Kopie des Bildes. Bei meiner Variante oben (über das Array usw. wird ja der gleiche VBA-Befehl genommen, nur kommen da die Bilder nicht in die Datei. Absolut merkwürdig!!!
Grüsse
"Nur vom Geben wird man reich!" Gerhard Schöne in "Spar deinen Wein nicht auf für morgen"
DANKE! Ich glaube mit etwas probieren kriege ich es hin.
Wie spreche ich das zuletzt eingefügte Bild denn an, um es zu formatieren: (siehe Fragezeichen)
Code:
ActiveSheet.Shapes.AddPicture withSlash(Pfad) & MyArray(i), msoTrue, msoTrue, 1, 1, 100, 100 Set pic = ??? With pic .ShapeRange.LockAspectRatio = msoTrue 'Seitenverhältnis des Bildes beibehalten If .Width > .Height Then .Width = CellW - 8 Else .Height = CellH - 8 'Bild-Größe der Zellgröße anpassen End If .Top = .Top + 4 '4 Pixel unter dem oberen Rand der Zelle .Left = Cells(rr, cc).Left + 4 '4 Pixel links neben dem linken Rand der Zelle Temp = .ShapeRange.Name 'um später das richtige Bild zu markieren, bevor der Link gesetzt wird End With
Grüsse
"Nur vom Geben wird man reich!" Gerhard Schöne in "Spar deinen Wein nicht auf für morgen"
25.06.2023, 11:14 (Dieser Beitrag wurde zuletzt bearbeitet: 25.06.2023, 11:18 von Elvis.)
Danke für die Hinweise. Leider bin ich noch nicht viel weiter, da alles was ich ausprobiert habe, Fehler erzeugt. (Excel stürzt dabei vollkommen ab...)
Code:
'Dim pic As Picture, a bis d as Single a = Cells(rr, cc).Left + 4 'Rand der Zelle noch zu sehen b = Cells(rr, cc).Top + 4 c = CellW - 8 'Zellweite d = CellH - 25 'Zellhöhe
'Error: falsche Anzahl an Argumenten oder ungültige Zuweisung einer Eigenschaft Set pic = ActiveSheet.Shapes.AddPicture2(withSlash(Pfad) & MyArray(i), msoTrue, a, b, c, d, 1)
Temp = pic.ShapeRange.Name 'um später das richtige Bild zu markieren, bevor der Link gesetzt wird
Set pic ... erzeugt dabei immernoch den Fehler (siehe Zeile drüber) und ich weiß nicht warum. Laut https://learn.microsoft.com/de-de/office...parameters sollte es so stimmen. Auch die Inhalte der einzelnen Variablen erscheinen logisch und in Ordnung.
Was übersehe ich denn hier? Ist pic as picture falsch? Aber was wäre dann richtig? Ok ein msoTrue hat gefehlt:
Code:
'Error: falsche Anzahl an Argumenten oder ungültige Zuweisung einer Eigenschaft Set pic = ActiveSheet.Shapes.AddPicture2(withSlash(Pfad) & MyArray(i), msoTrue, msoTrue, a, b, c, d, 1)
Jetzt heißt der Fehler: "Typen unverträglich"
Darum nochmal: Was übersehe ich denn hier? Ist pic as picture falsch? Aber was wäre dann richtig?
Grüsse
"Nur vom Geben wird man reich!" Gerhard Schöne in "Spar deinen Wein nicht auf für morgen"
Halbe Infos, halbe Antworten. Wit können doch z.B, keine Ahnung haben was in Array(i) steht. Sende ma: das ganze Makro und was du letztendlich vorhabst.
einmal nimmst du addpicture und dann addpicture2 beide Methoden haben unterschiedliche Parameter addpicture2 liefert ein shape zurück und du schiebst es in ein Picture Object. https://learn.microsoft.com/de-de/office...ddpicture2
keine Ahnung ob das hilfreich ist, aber das ist was mir so auffällt.