LoadPicture findet den Pfad nicht

e-nsign

Grünschnabel
Hallo,

ich habe in Excel 2007 einem Direkt-X Steuerelement mit Bild per Tastendruck ein Bild zugewiesen. Der relative Pfad zum Bild dafür steht in der Zelle daneben (C2).

Code:
Private Sub Image2_Click()
    Image2.Picture = LoadPicture(Range("C2"))
End Sub

Soweit so gut. Mal davon abgesehen, dass ich nicht weis wie man von einem angeklickten Bild erfährt in welcher Zelle es sich befindet (eigentlich sind die Bilder ja gar nicht in der Zelle...), klappt es mit dem Range-Befehl prima. Das Bild wird geladen und angezeigt.

Jetzt mein Problem:

Nach dem Speichern und Wiederaufrufen der Excel-Datei erhalte ich nur noch die Fehlermeldung "Pfad nicht gefunden".

Den Pfad habe ich 1000 Mal geprüft. Ich habe auch schon testweise das Bild ins gleiche Verzeichnis wie die Excel-Datei gestellt - nix geht.

Erstelle ich das Dokument neu, geht alles wieder prima. Bis zum erneuten Speichern.

Beim Start habe natürlich die Sicherheitsfragen (Makros, Active-X und Hyperlinks) entsprechend (Diesen Inhalt aktivieren) beantwortet.

Hat jemand eine Idee?

PS.: Ich habe es auch schon auf verschiednen Rechnern getestet WinXP und Vista - kein Unterschied.
 
Nein, Es gibt zwei Arbeitsblätter. Ich werde heute Abend mal die Dateien posten...

Vielen Dank für die Bemühungen

Viele Grüße

Arno Küchlin
 
Hallo Zvoni,

ich musste ein paar Tage verreisen. Jetzt habe ich Deinen Lösungsansatz ausprobiert.

Code:
Private Sub Image1_Click()
    Image1.Picture = LoadPicture(uebersicht.Range("C1"))
End Sub

Aber leider führte das zu "Laufzeitfehler 424 - Objekt erforderlich"

Ich habe jetzt mal die Datei angehängt.

Viele Grüße

Arno Küchlin
 

Anhänge

  • bestelluebersicht.zip
    170,9 KB · Aufrufe: 33
Sorry, aber ich kann nur bis Excel 2003 Dateien öffnen. Du müsstest mir also die Datei exportieren, damit ich es mir anschauen kann.

EDIT: Ist "Uebersicht" der Name des Tabellenobjekts oder ist es der Name des Tabellenblatts?

Wenn es nämlich der Name des Blattes ist könntest du es mal hiermit versuchen:
Visual Basic:
image1.Picture=LoadPicture(Worksheets("uebersicht").Range("c2"))
 
Hallo

Versuch´s mal mit:
Code:
Private Sub Image1_Click()
    Image1.Picture = LoadPicture(Application.ActiveWorkbook.Path & "\" & Application.Sheets("uebersicht").Range("C1"))
End Sub
 
OK, jetzt habe ich die Lösung:

Dein Ansatz war dabei der Auslöser.
Folgende Modifikation funktioniert jetzt sowohl im 97-2003er als auch 2007er Format:

Code:
Private Sub Image1_Click()
    Image1.Picture = LoadPicture(Worksheets(1).Range("C1"))
End Sub

Bei Worksheets() funktioniert der Name des Arbeitblattes nicht. Ich bin mal davon ausgegangen, dass für den Index die Blätter einfach durchnummeriert werden.

BINGO!

Vielen Dank für die Unterstützung

Viele Grüße

Arno Küchlin


PS: Weiterhin kann ich aber nur den Kopf über das Verhalten von Excel in diesem Fall schütteln. Warum geht es bei der Erstellung und nach dem Speichern nicht mehr? Das weis MS alleine...
 

Neue Beiträge

Zurück