Anzeige
Archiv - Navigation
1696to1700
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

Fotos anzeigen 2007 vs 2013

Fotos anzeigen 2007 vs 2013
25.06.2019 19:16:34
Hopps
Hallo,
eine Frage vorab:
Warum gibt es keinen Button "Code einfügen" bei der Beitragserstellung, bei Antworten jedoch schon?
Ok, nun zum eigentlichen Problem. Dieser Code läuft unter Excel2003 und 2007 (32 Bit) perfekt. Bildnummer in F3 auswählen und Bild wird ab Zelle I8 eingefügt.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Dateiname As String
Dim Pfad As String
If Not Intersect(Target, Range("F3,Z7")) Is Nothing Then
ActiveSheet.Unprotect Password:="test"
ActiveSheet.DrawingObjects.Delete
If Range("Z7") = "ja" Then
Pfad = ThisWorkbook.Path & "\Sonderfundbilder\"
Dateiname = Dir(Pfad & Format(Range("F3").Value, "0000") & "*")
If Dateiname  "" Then
ActiveSheet.Pictures.Insert(Pfad & Dateiname).Select
With Selection
.Top = Rows(18).Top
.Left = Columns(9).Left
.ShapeRange.LockAspectRatio = msoFalse
.Height = 400
.Width = 400
End With
End If
End If
End If
ActiveSheet.Protect Password:="test"
ActiveSheet.EnableSelection = xlUnlockedCells
Range("F3").Select
End Sub
In Excel 2013 (64 Bit) jedoch verschiebt Excel unmotiviert die Bilder.
Die 500ter Bildnummern landen bei F5 und die 1000ter bei F3 (die Nummern sind nur Bsp., hab nicht alle getestet). Die Bilder werden korrekt wiedergegeben, also ausgewählte Nummer passt zum Bild.
Liegt es am Code, dass da ein Element nicht von Excel2013 richtig interpretiert wird?
Und noch ne Frage:
ActiveSheet.DrawingObjects.Delete

löscht die Bilder, leider auch die Bildlaufleiste (Formularsteuerelement) , was ich aber benötige. Hatte es schon mit if then versucht, bin da aber ebenso gescheitert.
Wäre für Hilfe und Ratschläge sehr dankbar.
Viele Grüße
Hopps

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fotos anzeigen 2007 vs 2013
25.06.2019 20:00:23
Luschi
Hallo Hoops,
mit Excel 2019 (32-bit) klappt das bei mir so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim pic As Object
Dim Dateiname As String, Pfad As String
If Not Intersect(Target, Range("F3,H3")) Is Nothing Then
ActiveSheet.Unprotect Password:="test"
ActiveSheet.DrawingObjects.Delete
If Range("H3") = "ja" Then
Pfad = "F:\Daten\Downloads\2\"
Dateiname = Dir(Pfad & Format(Range("F3").Value, "00000") & "*")
If Dateiname  "" Then
Set pic = ActiveSheet.Pictures.Insert(Pfad & Dateiname)
With pic
.Top = Rows(18).Top
.Left = Columns(9).Left
.ShapeRange.LockAspectRatio = msoFalse
.Height = 400
.Width = 400
End With
End If
End If
End If
Set pic = Nothing
ActiveSheet.Protect Password:="test"
ActiveSheet.EnableSelection = xlUnlockedCells
Range("F3").Select
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Fotos anzeigen 2007 vs 2013
25.06.2019 21:38:51
Hopps
Hallo Luschi,
vielen lieben Dank.
Hatte Probleme dies in 2007 einzubauen, da er nie die Bilder fand. Hab den Code dann in Einzelschritten durchwandert und er fand nie die Datei. Aber irgendwie läuft es plötzlich.
Komme leider wieder erst nächste Woche zum testen auf 2013, aber da melde ich mich bei Dir nochmals. Wenn Du aber sagst, es läuft auf 2019, dann müsste wohl alles gut sein! ;-)
Hast Du vielleicht noch ne Idee zu meiner Bildlaufleiste?
Denn die wird auch immer mit gelöscht bei ActiveSheet.DrawingObjects.Delete
Mit dankbaren Grüßen
Hopps
AW: Fotos anzeigen 2007 vs 2013
26.06.2019 09:09:09
Nepumuk
Hallo Hopps,
teste mal:
Private Sub Worksheet_Change(ByVal Target As Range)
Const Pfad As String = "F:\Daten\Downloads\2\"
Dim pic As Shape
Dim Dateiname As String
If Not Intersect(Target, Range("F3,H3")) Is Nothing Then
Unprotect Password:="test"
For Each pic In Shapes
With pic
If .Type = msoPicture Or _
.Type = msoLinkedPicture Then Call .Delete
End With
Next
If Range("H3").Value = "ja" Then
Dateiname = Dir(Pfad & Format(Range("F3").Value, "00000") & "*")
If Dateiname  "" Then
Set pic = Pictures.Insert(Pfad & Dateiname)
With pic
.Top = Rows(18).Top
.Left = Columns(9).Left
.ShapeRange.LockAspectRatio = msoFalse
.Height = 400
.Width = 400
End With
Set pic = Nothing
End If
End If
End If
Protect Password:="test"
EnableSelection = xlUnlockedCells
Range("F3").Select
End Sub

Gruß
Nepumuk
Anzeige
AW: Fotos anzeigen 2007 vs 2013
26.06.2019 21:17:25
Hopps
Hallo Nepumuk,
bin erst jetzt zum testen gekommen, musste bei der Hitze leider arbeiten (wie wohl andere auch).
Vielen lieben Dank für Deine Hilfe. Dass mit dem Erhalt der Bildlaufleiste funktioniert jetzt,
Musste 'Dim pic As Shape raus nehmen, da immer Typen unverträglich kam und ich nicht den Fehler beheben konnte.
Mein (in 2007) funktionierender Code sieht nun so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
'Dim pic As Shape
Dim Dateiname As String
Dim Pfad As String
If Not Intersect(Target, Range("F3,Z7")) Is Nothing Then
Unprotect Password:="test"
For Each pic In Shapes
With pic
If .Type = msoPicture Or _
.Type = msoLinkedPicture Then Call .Delete
End With
Next
If Range("Z7") = "ja" Then
Pfad = ThisWorkbook.Path & "\Bilder\"
Dateiname = Dir(Pfad & Format(Range("F3").Value, "0000") & "*")
If Dateiname  "" Then
Set pic = ActiveSheet.Pictures.Insert(Pfad & Dateiname)
With pic
.Top = Rows(18).Top
.Left = Columns(9).Left
.ShapeRange.LockAspectRatio = msoFalse
.Height = 400
.Width = 400
End With
Set pic = Nothing
End If
End If
End If
ActiveSheet.Protect Password:="test"
ActiveSheet.EnableSelection = xlUnlockedCells
Range("F3").Select
End Sub
Hatte nun, da die Bildlaufleiste mit F3 verbunden ist und leider das Makro nicht startet, wenn die Zahl sich in F3 ändert, es mit Calculate versucht, jedoch kommt dann in Zeile
If Not Intersect(Target, Range("F3,Z7")) Is Nothing Then
das ein Objekt fehlen würde und da bin ich dann mit meinem Latein am Ende.
Vielleicht magst Du mir da nochmals Hilfe geben.
Sollte mein zusammengestoppelter Code auch noch Dir auffallende Fehler haben, dann wäre ich ebenso für Hilfe sehr dankbar.
Mit dankbaren Grüßen
Hopps
Anzeige
AW: Fotos anzeigen 2007 vs 2013
27.06.2019 09:09:20
Nepumuk
Hallo Hopps,
bei eine ScrollBar müssen wir das anders machen. Lösche das Makro im Modul der Tabelle. Füge ein Standardmodul ein (Menüleiste im VBA-Editor - Einfügen - Modul). Füge in dieses Modul folgenden Code ein. Rechtsklick auf die ScrollBar - Makro zuweisen. Im Dialog wählst due den Namen meines Makros (ScrollBarChange) aus. Dann kannst du auch die Zellverknüpfung löschen, die benötigen wir nicht.
Option Explicit

Public Sub ScrollBarChange()
    Dim Dateiname As String
    Dim Pfad As String
    Dim Bild As Picture
    Dim objShape As Shape
    With Worksheets("Tabelle1")
        .Unprotect Password:="test"
        For Each objShape In .Shapes
            With objShape
                If .Type = msoPicture Or _
                    .Type = msoLinkedPicture Then Call .Delete
            End With
        Next
        If .Range("Z7").Value = "ja" Then
            Pfad = ThisWorkbook.Path & "\Bilder\"
            Dateiname = Dir$(Pfad & Format$(.Shapes(Application.Caller) _
                .OLEFormat.Object.Value, "0000") & "*")
            If Dateiname <> "" Then
                Set Bild = .Pictures.Insert(Pfad & Dateiname)
                Bild.Top = .Rows(18).Top
                Bild.Left = .Columns(9).Left
                Bild.ShapeRange.LockAspectRatio = msoFalse
                Bild.Height = 400
                Bild.Width = 400
                Set Bild = Nothing
            End If
        End If
        .Protect Password:="test"
        .EnableSelection = xlUnlockedCells
        .Range("F3").Select
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Fotos anzeigen 2007 vs 2013
27.06.2019 09:30:12
Hopps
Hallo Nepumuk,
bevor ich wieder in die Hitze muss, dachte ich, ich schau noch mal kurz rein. Und Du hattest schon geantwortet.
Was soll ich sagen, eingebaut und funktioniert auf Anhieb, wie gewünscht. Cool...freu...
Ich Danke Dir rechtherzlich und auch den vielen Helfern hier im Forum, die mir bei der Umsetzung geholfen haben.
Danke!
Mit sehr dankbaren Grüßen
Hopps

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige