Anzeige
Archiv - Navigation
1872to1876
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
Inhaltsverzeichnis

Bild importieren und anpassen

Bild importieren und anpassen
18.03.2022 11:06:52
Peter
Hallo zusammen,
mittels einer kleinen Prozedur öffne ich den Windows-Filedialog zum Auswählen einer Bild-Datei.
Nach dem Auswählen wird diese Datei in ein Arbeitsblatt geladen. Sie wird dort positioniert und in der Größe angepasst.
Auf meinem Rechner und mit Microsoft 365 Apps for Business klappt das perfekt.
Bei meinem Kunden (ebenfalls Microsoft 365) wird das Bild zwar importiert, landet jedoch irgendwo im Arbeitsblatt und ist meistens auch verzerrt :-(
Hier das passende Makro dazu:

Sub sLoadPicture()
Dim fd                  As FileDialog
Dim FileChosen          As Integer
Dim pct                 As Picture
Dim iLeft, iTop, iWidth, iHeight
Dim sFile               As String
Dim dTempH              As Double
Dim dTempB              As Double
Dim rZelle              As String
Dim objPicture          As Object
If ActiveSheet.CodeName  "tblBilder" Then Exit Sub
rZelle = ActiveCell.Address
iLeft = tblBilder.Range(rZelle).Left
iTop = tblBilder.Range(rZelle).Top
iHeight = tblBilder.Range(rZelle).Height
Set fd = Application.FileDialog(msoFileDialogFilePicker)
FileChosen = fd.Show
fd.title = "Bild zum Import auswählen"
fd.InitialView = msoFileDialogViewSmallIcons
fd.Filters.Clear
If FileChosen = -1 Then
sFile = fd.SelectedItems(1)
If Right$(sFile, 4) = ".jpg" Or Right$(sFile, 4) = ".png" Or Right$(sFile, 5) = ".jpeg" Then
Set objPicture = tblBilder.Shapes.AddPicture _
( _
Filename:=sFile, _
Linktofile:=msoFalse, _
savewithdocument:=msoTrue, _
Left:=iLeft, _
Top:=iTop, _
Width:=-1, _
Height:=-1 _
)
objPicture.LockAspectRatio = msoTrue
objPicture.Height = iHeight
Set objPicture = Nothing
End If
End If
End Sub
Habt Ihr eine Idee, was da schiefläuft ... und wie ich das "hinbiegen" kann ?
Vielen Dank für Eure Hilfe und sonnige Grüße
Peter

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

Betreff
Datum
Anwender
Anzeige
AW: Bild importieren und anpassen
18.03.2022 11:25:11
Oberschlumpf
Hi Peter,
hab deinen Code kopiert, in ne neue Exceldatei, in einem allgem. Modul eingefügt, gestartet, und es fängt schon an mit der Zeile

iLeft = tblBilder.Range(rZelle).Left
Bemängelt wird, dass tblBilder nicht deklariert ist
Option Explicit in jedem Modul ist eigtl ungeschriebenes Gesetz (dann wäre man gezwungen, den obigen Fehler zu korrigieren)...na gut, eigtl - man kann, muss man aber nich verwenden - nur hier zeigt es sich wieder, dass es besser wäre, Option Explicit einzusetzen...
Sorry, VBA = gut glaub ich schon jetzt nicht mehr.
Und ich kann den Fehler natürlich nicht korrigieren, da dein Code nicht bekannt gibt, was denn tblBilder sein soll.
Somit kann ich auch den Rest deines gezeigten Codes nich testen...
Ciao
Thorsten
Anzeige
du musst ...
18.03.2022 11:36:43
Rudi
den Codenamen eines deiner Blätter in tblBilder ändern.

If ActiveSheet.CodeName  "tblBilder" Then Exit Sub
Gruß
Rudi
AW: du musst ...
18.03.2022 11:46:36
Oberschlumpf
...nich ich muss...
er hat aber ...
18.03.2022 11:54:29
Rudi
und deshalb wird bei ihm nicht

Bemängelt wird, dass tblBilder nicht deklariert ist
Ich mach das auch immer. Dann muss ich Worksheets nicht extra deklarieren bzw. SETten und behalte trotzdem den Überblick.
Gruß
Rudi
AW: du musst ...
18.03.2022 14:45:58
Peter
Hallo Rudi,
es gibt ein Blatt, dass diesen CodeNamen trägt.
Und - wie geschrieben - läuft der Code bei mir ja auch perfekt.
Wenn die Mappe auf einem anderen Rechner bearbeitet wird, dann geht's nicht.
Gruß
Peter
Anzeige
AW: Bild importieren und anpassen
18.03.2022 14:43:57
Peter
Hallo Thorsten,
nice try :-)
Und natürlich gibt es bei mir keine Programmierung ohne option explicit.
Wie Du direkt am Anfang sehen kannst ... handelt es sich bei tblBilder um den Codenamen eines Arbeitsblattes.
Und da wäre es auch egal ob option explicit oben steht oder nicht.
Gruß
Peter
AW: Bild importieren und anpassen
18.03.2022 11:38:35
Luschi
Hallo Peter,
diese Befehlszeile: rZelle = ActiveCell.Address
wirst Du in meinen Vba-Projekten NIE sehen und Du leitest davon ja Einiges ab, zB. die Position des Bildes. Wie willst man denn da sicher stellen, daß der User nur eine Zelle in einem bestimmeten Bereich auswählt?
fragt sich Luschi
aus klein-Paris
Anzeige
ActiveCell...
18.03.2022 11:59:29
Rudi
...gibt's nur eine, Luschi. Im Gegensatz zu Selection.
Ich würde allerdings rZelle As Range definieren und anschließend z.B. iLeft = rZelle.Left setzen.
Aber wem erzähle ich das ;-)
Gruß
Rudi
AW: Bild importieren und anpassen
18.03.2022 14:48:29
Peter
Hallo Luschi,
das Makro wird bei einem Doppelklick auf eine Zelle aufgerufen.
Und in dieser Behandlung findet die Prüfung statt ob evtl. mehrere Zellen aktiv sind ... auch wenn ich mir das bei einem Doppelklick nicht vorstellen kann.
Gruß aus der Wetterau
Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige