Bild als Link in Excel

Hallo,

ich hab ein kleines Berechnungsprogramm in eine Excel-Tabelle geschrieben und eine passende Hilfe-Datei im Word-bzw. PDF-Format. Die beiden liegen im gleichen Ordner.

Ist es möglich, dass sich die Hilfe-Datei mit einem Klick auf ein Bild in der Excel-Tabelle öffnet? Ich möchte gerne das Programmlogo mit der Hilfedatei verknüpfen…

Ein Bild kann ich einfügen, einen Textlink auch. Nur wie benutze ich das Bild als Link?

Vielen Dank für Eure Hinweise!
Andrea

Hallo Andrea,

Ist es möglich, dass sich die Hilfe-Datei mit einem Klick auf
ein Bild in der Excel-Tabelle öffnet? Ich möchte gerne das
Programmlogo mit der Hilfedatei verknüpfen…

mit Rechtsklick aufs Bild kannst du ein Makro zuweisen, vielleicht dieses:

Sub Laden()
Dim appWord
appWord = Shell(„C:…Pfad zu Word…\word.exe c:\test\test.doc“, vbMaximizedFocus)
End Sub

Ein Bild kann ich einfügen, einen Textlink auch.

Was ist ein Textlink, ein Hyperlink?

Gruß
Reinhard

Hallo Reinhard,

vielen Dank für den Hinweis. Es ist also mit einem Makro möglich.
Das ist schon mal gut zu wissen. Mit dem Schreiben von Makros kenne ich mich nicht aus, von daher bin ich sehr dankbar für den Beispieltext.

Sub Laden()
Dim appWord
appWord = Shell(„C:…Pfad zu Word…\word.exe
c:\test\test.doc“, vbMaximizedFocus)
End Sub

Ich möchte die Datei gerne auch weitergeben, so dass sie auf anderen Rechner nutzbar wäre. Das wäre nicht mehr der Fall, wenn Word nicht im exakt gleichen Pfad installiert ist oder ein Programm wie OpenOffice benutzt wird, oder?
Geht das auch, ohne das Programm vorzugeben, mit dem die Datei geöffnet werden soll?

Was ist ein Textlink, ein Hyperlink?

Ja, so hatte ich das gemeint. Ein Hyperlink in Textform, also Text, den man anklicken kann :smile:

Gruß
Andrea

Hallo Andrea,

vielen Dank für den Hinweis. Es ist also mit einem Makro
möglich.

ja.

Sub Laden()
Dim appWord
appWord = Shell(„C:…Pfad zu Word…\word.exe
c:\test\test.doc“, vbMaximizedFocus)
End Sub

Ich möchte die Datei gerne auch weitergeben, so dass sie auf
anderen Rechner nutzbar wäre. Das wäre nicht mehr der Fall,
wenn Word nicht im exakt gleichen Pfad installiert ist oder
ein Programm wie OpenOffice benutzt wird, oder?
Geht das auch, ohne das Programm vorzugeben, mit dem die Datei
geöffnet werden soll?

Zum einen, wenn diese Docs im gleichen Verzeichnis sind wie die geöffnete Excelmappe, dann kann man per makro den jeweiligen Pfad auslesen und braucht keine spezielle Pfadangabe mehr.
Das gilt jetzt für die .Doc.

Für die word.exe gilt natürlich das Gleiche aber sie wird sicher nie da sein wo die Excelmappe ist.

Bestimmte Programme, möglicherweise auch Word, weiß das grad nicht, brauchen beim Aufruf mit Shell keine exakte Pfadangabe weil Windows weiß wo sie stehen.

Bei OO kann das anders sein.

Insofern ist Shell dafür nicht so geeignet.

Die Lösung ist API, quasi ein erweiterter Funktionsumfang für Vba, also für ein Makro.

bei APIs gibt es „ShellExecute“. Ähnlich wie „Shell“, aber es braucht nur den Doc-Namen und öffnet dann diese Doc mit dem damit in Windows verknüpftem Programm, Word, OO, sonstwas.
So wie es scheint wäre das doch die Lösung.

Ist das so?

Und, das mit den Hyperlinks, die brauchen feste Pfade, also ungeeignet für dich.

Gruß
Reinhard

Hallo Reinhard,

Zum einen, wenn diese Docs im gleichen Verzeichnis sind wie
die geöffnete Excelmappe, dann kann man per makro den
jeweiligen Pfad auslesen und braucht keine spezielle
Pfadangabe mehr.
Das gilt jetzt für die .Doc.

Verstehe.

Für die word.exe gilt natürlich das Gleiche aber sie wird
sicher nie da sein wo die Excelmappe ist.

Bestimmte Programme, möglicherweise auch Word, weiß das grad
nicht, brauchen beim Aufruf mit Shell keine exakte Pfadangabe
weil Windows weiß wo sie stehen.

Bei OO kann das anders sein.

Das ist allerdings richtig.

Die Lösung ist API, quasi ein erweiterter Funktionsumfang für
Vba, also für ein Makro.

bei APIs gibt es „ShellExecute“. Ähnlich wie „Shell“, aber es
braucht nur den Doc-Namen und öffnet dann diese Doc mit dem
damit in Windows verknüpftem Programm, Word, OO, sonstwas.
So wie es scheint wäre das doch die Lösung.

Ist das so?

Das klingt auf alle Fälle so, als wäre es genau das, was ich gesucht habe.
Bist du so lieb und erklärst mir, wie man so ein API einrichtet? *liebguck* Davon hab ich wirklich überhaupt keine Ahnung…

Liebe Grüße
Andrea

Datei mit dem entsprechenden Programm öffnen

bei APIs gibt es „ShellExecute“. Ähnlich wie „Shell“, aber es
braucht nur den Doc-Namen und öffnet dann diese Doc mit dem
damit in Windows verknüpftem Programm, Word, OO, sonstwas.
So wie es scheint wäre das doch die Lösung.
Ist das so?

Das klingt auf alle Fälle so, als wäre es genau das, was ich
gesucht habe.
Bist du so lieb und erklärst mir, wie man so ein API
einrichtet? *liebguck* Davon hab ich wirklich überhaupt keine
Ahnung…

Hallo Andrea,

ich hatte Recht, so geht es, allerdings hatte ich mich überschätzt, da du hier nicht viel verstehen wirst. Ich mehr, aber garantiert nicht alles 100%ig.

http://support.microsoft.com/kb/238245/de

Denn OPUSAPP habe ich noch nie gelesen, keinerlei Ahnung was das mit Excel zu tun hat.

Den Rest kapiere ich ja so einigermaßen, kam aber nicht auf den Trichter wie man das umbaut für „unsre“ Zwecke.

Also machte ich mich andern Orts schlau. Bedanke dich also für die Lösung bei Hajo, Erich, Tino, Rainer(Ramses).

Laß dich nicht von den Declares verwirren, dein Job ist einzig den Code in Modul1 o.ä. reinzukopieren und wie gesagt als makro einem Bild die Prozedur test zuzuweisen.

Wenn, wie gesagt, das Word-Dokument eonen unklaren Pfad hat, so kann ich dir das ganze umbasteln sodaß der Code die Doc nimmt die im gleichen Pfad steht wie die den Code aufrufende Excelmappe.

In der Prozedur test selbst, ist es m.E. leicht ersichtlich was du tun mußt um die Doc in unterschiedlichen Fenstergrößen zu öffnen.

Der Code:

Option Explicit

Declare Function ShellExecute Lib "SHELL32.DLL" \_
 Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, \_
 ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, \_
 ByVal nShowCmd As Long) As Long

Sub Open\_File(strFileName As String, windowType As Integer)
 ShellExecute 0, "Open", strFileName, "", "", windowType
End Sub

Sub test()
 '1 = vbNormalFocus
 '2 = Minimized
 '3 = Maximized
 Open\_File "c:\DeineDatei.txt", 1
End Sub

Gruß
Reinhard

Hallo Reinhard,

Ich bin ganz begeistert. Das hat ja erstaunlich gut und einfach funktioniert. :smile: Toll!

Einziger Haken im Moment: ich muss den kompletten Pfad zur Hilfedatei angeben. Und sobald sich das jemand auf einen Stick zieht oder andere Laufwerksbuchstaben hat als ich, wird es nicht mehr funktionieren…
Ist es irgendwie möglich, das so zu schreiben, dass er die Datei automatisch im gleichen Verzeichnis nimmt?

Ich habe statt:
„Q:\KSC-PROF\Programme\Umrechnung APB Excel\Anleitung_Weich.doc“
schon mal
„Anleitung_Weich.doc“
probiert, aber das hat nicht funktioniert… :frowning:

Liebe Grüße
Andrea

hallo Andrea,

Ich bin ganz begeistert. Das hat ja erstaunlich gut und
einfach funktioniert. :smile: Toll!

freut mich wenn es klappt.

Ist es irgendwie möglich, das so zu schreiben, dass er die
Datei automatisch im gleichen Verzeichnis nimmt?

Option Explicit

Declare Function ShellExecute Lib "SHELL32.DLL" \_
 Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, \_
 ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, \_
 ByVal nShowCmd As Long) As Long

Sub Open\_File(strFileName As String, windowType As Integer)
 ShellExecute 0, "Open", strFileName, "", "", windowType
End Sub

Sub test()
 '1 = vbNormalFocus
 '2 = Minimized
 '3 = Maximized
 Open\_File ThisWorkbook.Path & "\" & "Anleitung\_Weich.doc", 1
End Sub

Gruß
Reinhard

Juchu, juchu! Es klappt einwandfrei auch woanders! *freu*
Reinhard, du bist mein Held! :smile:

Ich danke dir vielmals für Deine Hilfe und Deinen tollen Einsatz.
Das ist wirklich nicht selbstverständlich.

Tausend Dank!!! *hüpf*
Andrea