Bilder vom Sharepoint einfügen
#1
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 ???

 
.xlsm   _JB_Foto_Viewer_v101.xlsm (Größe: 60,7 KB / Downloads: 4)
Antworten Top
#2
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.

[Bild: err.jpg]
Heart Grüsse 

"Nur vom Geben wird man reich!" Gerhard Schöne in "Spar deinen Wein nicht auf für morgen" 
Antworten Top
#3
Hallo,

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
Antworten Top
#4
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. 


- http://schemas.openxmlformats.org/packag...ationships">
  rId8" Type="
Dateiupload bitte im Forum! So geht es: Klick mich!
]" Target="[b]file:///D:\FotoViewer\20210523_191254.jpg
" TargetMode="External" />

Wie erreiche ich, das die Bilder (am besten als Tumbnails) in die Datei kopiert werden?

Wenn ich händisch das Ganze mache und als Makro aufzeichne, passiert das Gleiche:
Code:
ActiveSheet.Pictures.Insert("C:\Users\GRP\OneDrive\Bilder\Haus wallbox.jpg")

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!!!
Heart Grüsse 

"Nur vom Geben wird man reich!" Gerhard Schöne in "Spar deinen Wein nicht auf für morgen" 
Antworten Top
#5
Teste mal ob diese angehängte Datei macht was du suchst:


Angehängte Dateien
.xlsb   __peer.xlsb (Größe: 14,84 KB / Downloads: 5)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#6
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
       
Heart Grüsse 

"Nur vom Geben wird man reich!" Gerhard Schöne in "Spar deinen Wein nicht auf für morgen" 
Antworten Top
#7
Hi,

da .AddPicture das erstellte Objekt zurück gibt:

Code:
Set pic = ActiveSheet.Shapes.AddPicture(withSlash(Pfad) & MyArray(i), msoTrue, msoTrue, 1, 1, 100, 100)
With pic
...
End With
oder gleich ohne Variable
Code:
With ActiveSheet.Shapes.AddPicture(withSlash(Pfad) & MyArray(i), msoTrue, msoTrue, 1, 1, 100, 100)
...
End With

Das könnte man übrigens mit Hilfe der F1-Taste ganz schnell selber rausbekommen (Hervorhebung von mir) :
MS Online-Hilfe schrieb:Shapes.AddPicture-Methode (Excel)
Artikel
07.04.2023
6 Mitwirkende
In diesem Artikel

Syntax
Parameter
Rückgabewert
Beispiel
Erstellt ein Bild aus einer vorhandenen Datei. Gibt ein Shape-Objekt zurück, das das neue Bild darstellt.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#8
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?
Heart Grüsse 

"Nur vom Geben wird man reich!" Gerhard Schöne in "Spar deinen Wein nicht auf für morgen" 
Antworten Top
#9
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.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#10
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.
Antworten Top


Gehe zu:


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