Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Bild link in Bild wandeln
10.08.2023 15:56:33
daniel
Hallo
ich habe in eine Exceldatei ein paa bilder eingefügt mit diesem VBA-Befehl:

ActiveSheet.Pictures.Insert(Pfad & Datei)

die Bilder sind aber nur als Link eingefügt, dh die Datei hat nur wenige KB und die Bilder müssen beim Öffnen erst aktualisiert werden.
wie kann man jetzt die Bilder in der Exceldatei in echte Bilde umwandeln, so dass die Datei an beliebige Personen verschickbar ist?

Gruß Daniel

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bild link in Bild wandeln
10.08.2023 16:41:58
volti
Hallo Daniel,

versuche es mal mit AddPicture anstelle von Pictures.Insert...

Hier ein Beispiel....
Sub Test()

' Bild in aktueller Zelle einfügen und an diese anpassen
Set oPic = ActiveSheet.Shapes.AddPicture(Filename:=Pfad & Datei, _
LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
Left:=Selection.Left, Top:=Selection.Top, Width:=-1, Height:=-1)
With oPic
.LockAspectRatio = msoTrue
.Height = .TopLeftCell.Height ' Höhe der Bild-Zelle
.Placement = xlMoveAndSize
End With
End Sub

Gruß
Karl-Heinz
Anzeige
Bild link in Bild wandeln
10.08.2023 16:52:24
daniel
Ja Super Danke, das was.

bleibt halt nur die Frage, geht sowas auch nachträglich, ohne dass man die Bilder neu einfügt?

Gruß Daniel
Bild link in Bild wandeln
10.08.2023 17:09:30
volti
Hi,

ich denke nicht, dass das mit einfachen Mitteln umgewandelt werden kann.
Man müsste die Links ja dann durch das Bild ersetzen, ein entsprechender VBA-Code ist sicher aufwändiger als es gleich neu zu machen.

Aber vielleicht hat ja noch jemand eine passende Idee dazu.

Gruß KH
Bild link in Bild wandeln
11.08.2023 15:21:20
Nepumuk
Hallo daniel,

so:

Public Sub Beispiel1()

Dim objShape As Shape
Dim objWorksheet As Worksheet
For Each objWorksheet In ThisWorkbook.Worksheets
For Each objShape In objWorksheet.Shapes
If objShape.Type = msoLinkedPicture Then
Call objShape.CopyPicture(Appearance:=xlScreen, Format:=xlPicture)
Call objWorksheet.Paste(Destination:=objShape.TopLeftCell, Link:=False)
Call objShape.Delete
End If
Next
Next
End Sub

Gruß
Nepumuk
Anzeige
Bild link in Bild wandeln
11.08.2023 19:08:25
daniel
Hi Nepumukt
ok kopieren und nochmal einfügen, aber auch per Makro
Danke.

kurze Frage, nach welcher Logik verwendest du CALL?
dh wann schreibst du Call vor den Befehl und wann nicht?

gruß Daniel
Bild link in Bild wandeln
11.08.2023 19:15:15
Nepumuk
Hallo daniel,

immer wenn es sich um eine Sub oder eine Function handelt von der ich keine Rückgabe erwarte.

Such mal im Objektkatalog nach CopyPicture für die Klasse Shape. Da findest du unten links das:

Sub CopyPicture([Appearance], [Format])

Element von Excel.Shape

Gruß
Nepumuk
Bild link in Bild wandeln
11.08.2023 19:21:58
daniel
ah ok
ich rufe nur selbstgeschriebene Makros mit Call auf.
und alles was originär VBA ist, ohne
Ansonsten steht mir zu oft "Call" am Anfang der Zeile, was es für mich schwerer macht, wenn ich im Code nach bestimmten Abschnitten suche, mit dem häufigen "Call" sieht alles gleich aus.
Gruß Daniel
Anzeige
Bild link in Bild wandeln
11.08.2023 19:27:52
Nepumuk
Hallo Daniel,

jeder wie es ihm gefällt. :-)

Gruß
Nepumuk
Bild link in Bild wandeln
11.08.2023 19:41:27
daniel
die Frage ist halt, ob das Call noch einen anderen Vorteil hat, der mir bisher noch nicht aufgefallen ist und ob es sinnvoll ist, auf deine Anwendungsweise umzuschwenken oder ob ich besser bei meiner bleibe.

203 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige