# LoadPicture findet den Pfad nicht



## e-nsign (30. August 2008)

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).


```
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.


----------



## Zvoni (1. September 2008)

Schon mal versucht in C2 den absoluten Pfad auszuprobieren?


----------



## e-nsign (1. September 2008)

Ja, das hat leider auch nicht funktioniert... Ich bin ratlos.


----------



## Zvoni (2. September 2008)

Die Arbeitsmappe hat nur ein Tabellenblatt?


----------



## e-nsign (2. September 2008)

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


----------



## Zvoni (2. September 2008)

e-nsign hat gesagt.:


> Nein, Es gibt zwei Arbeitsblätter. Ich werde heute Abend mal die Dateien posten...
> 
> Vielen Dank für die Bemühungen
> 
> ...



Tja, da hast du dein Problem.
Du gibst Range("C2") ohne Qualifizierung an.

Versuchs mal mit

image2.Picture=LoadPicture(Tabelle1.Range("C2"))


----------



## e-nsign (5. September 2008)

Hallo Zvoni,

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


```
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


----------



## Zvoni (6. September 2008)

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:

```
image1.Picture=LoadPicture(Worksheets("uebersicht").Range("c2"))
```


----------



## wincnc (6. September 2008)

Hallo

Versuch´s mal mit:

```
Private Sub Image1_Click()
    Image1.Picture = LoadPicture(Application.ActiveWorkbook.Path & "\" & Application.Sheets("uebersicht").Range("C1"))
End Sub
```


----------



## e-nsign (6. September 2008)

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:


```
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...


----------

