Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1656to1660
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

Projekt Bilder einfügen

Projekt Bilder einfügen
23.11.2018 14:01:36
Vincent
Guten Tag liebes Forum,
derzeit versuche ich mich VBA mir ein wenig Arbeit zu erleichtern, da ich demnächst sehr viele Daten in Listen aktualisieren/eintragen muss. Da ich aber ehrlich gesagt kaum Ahnung von VBA habe, bin ich derzeit eine CopyCat. Nur leider komme ich derzeit trotz stundenlangem Suchen nicht auf das gewünschte Ergebnis.
Nun soll ich für diverse Listen Bilder und Akten(PDFs) (so um die Tausend) einfügen. Für die Bilder benutze ich derzeit:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim shp As Shape
If Intersect(Target, [B:B]) Is Nothing Then Exit Sub
If Target.Row Mod 20 = 0 Then Exit Sub
On Error GoTo son
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture And shp.TopLeftCell.Address = Target.Offset(0, 2).Address Then shp. _
Delete
Next
If Target.Value  "" And Dir("C:\Users\l0zkuni\Desktop\Vincent\TEST\" & Target.Value & ".jpg")  _
= "" Then
'picture not there!
MsgBox Target.Value & " Doesn't exist!"
End If
ActiveSheet.Pictures.Insert("C:\Users\l0zkuni\Desktop\Vincent\TEST\" & Target.Value & ".jpg"). _
Select
Selection.Top = Target.Offset(0, 2).Top
Selection.Left = Target.Offset(0, 2).Left
With Selection.ShapeRange
.LockAspectRatio = msoFalse
.Height = Target.Offset(0, 2).Height
.Width = Target.Offset(0, 2).Width
.ZOrder msoBringToFront
End With
Target.Offset(1, 0).Select
son:
End Sub

Das funktioniert soweit gut. Schön wäre es noch, wenn in einer Zelle in Spalte B etwas geändert wird, sich das alte Bild von selbst löscht. Das geht aber zur Not manuell.
Nachdem ich das Bild eingefügt habe, verwende ich folgendes Modul, um das Bild zu vergrößern und zu verkleinern.
Sub gross()
With ActiveSheet.Shapes(Application.Caller)
.LockAspectRatio = msoTrue
.Height = .Height / 2
.Width = .Width / 2
.OnAction = "klein"
End With
End Sub
Sub klein()
With ActiveSheet.Shapes(Application.Caller)
.LockAspectRatio = msoTrue
.Height = .Height * 2
.Width = .Width * 2
.OnAction = "gross"
End With
End Sub Das würde ich gerne in Verbindung bringen. Es soll also automatisch jedem eingefügtem Bild das Makro zugewiesen werden. Hab mich schon mit if, with und call daran versucht, bekomme aber mit meinem begrenzten Wissen keine vernünftigen Bezüge hin.
Vielen Dank schon Mal im Voraus für eure Hilfe und Zeit :)
Besten Gruß,
Vincent

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Projekt Bilder einfügen
23.11.2018 16:51:34
Zwenn
Hallo Vincent,
habe vor einiger Zeit selber mal zu dem Thema recherchiert und bin hierüber gestolpert:

Sub MakroZuweisen()
'Quelle:
'http://www.office-loesung.de/ftopic495255_0_0_asc.php
Dim shpe As Shape
For Each shpe In ActiveSheet.Shapes
shpe.OnAction = "BildVergrössern"
Next
End Sub

Schau Dir auch ruhig mal den als Quelle angegebenen Thread an. Den oberen Teil brauchst Du dabei nicht, sondern erst ab dem Posting, in dem (ein) Daniel diesen Code zur Verfügung stellt.
Wenn Du dein Makro nur Bildern in einer bestimmten Spalte zuweisen willst, musst Du zusätzlich abfragen, ob das shape in der Spalte liegt.
Viele Grüße,
Zwenn
Anzeige
AW: Projekt Bilder einfügen
27.11.2018 08:34:51
Vincent
Hi Zwenn,
vielen Dank für die schnelle Antwort. Das Problem konnte ich jetzt lösen. Jetzt will ich auch noch das Bild in den Vordergrund stellen. Habe schon:
With Selection.ShapeRange
.LockAspectRatio = msoFalse
.Height = Target.Offset(0, 2).Height
.Width = Target.Offset(0, 2).Width
.ZOrder msoBringToFront
End With
probiert, funktioniert aber leider nicht. Kann da jemand weiterhelfen?
Besten Dank,
Vincent

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige