Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
768to772
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
768to772
768to772
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA: Bei Excel-Start über Link den Pfad erkennen?

VBA: Bei Excel-Start über Link den Pfad erkennen?
31.05.2006 15:14:21
Rudolf
Hallo Forum,
kann man nach Start einer Excel-Datei mit VBA-Code feststellen, ob die Excel-Anwendung von einer Verknüpfung aus irgendeinem Verzeichnis gestartet wurde und den Pfad dieser Verknüpfung auslesen?
Mein Makro wird aus unterschiedlichen Verzeichnissen mittels Verknüpfung gestartet, ich möchte den jeweiligen Startpfad temporär als Pfad zum Speichern festlegen.
Im Moment gibt mir ActiveWorkbook.Path bei Workbook_Open() natürlich nur den Pfad der Originaldatei zurück und der Anwender muß sich zum Speichern in sein Verzeichnis durchklicken. Das möchte ich vermeiden.
Meine tagelange Internetsuche mit allen möglichen Stichwörtern hat nichts gebracht.
Hat jemand einen Tip?
Viele Grüße R. Benka

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Bei Excel-Start über Link den Pfad erkenn
01.06.2006 19:07:42
ChrisL
Hallo Rudolf
Ich vermute mal, dass es grundsätzlich nicht möglich ist. Hatte aber gerade eine verückte Idee für eine Krückenlösung :-)
Hinter der Zelle mit dem Hyperlink eine SelectionChange Ereignis einfügen, das ein Cookie im Ordner termporäre Internetdateien setzt. Für die Ermittlung des Pfads gibts eine dieser "super krassen" Funktionen :-)
Private Declare

Function GetDesktopWindow Lib "user32" () As Long
Private Declare 

Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare 

Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As Long) As Long
Private Const NOERROR = &H0
Private Const MAX_PATH = 260
Public 

Function TempInternetVerzeichnis() As String
Dim sPath As String
Dim pidl As Long
If SHGetSpecialFolderLocation(GetDesktopWindow(), &H20, pidl) = NOERROR Then
sPath = Space$(MAX_PATH)
If SHGetPathFromIDList(ByVal pidl, ByVal sPath) Then TempInternetVerzeichnis = Left$(sPath, InStr(sPath, Chr$(0)) - 1)
End If
End Function

Die Textdatei lässt sich einfach schreiben z.B.
Close #1
Open TempInternetVerzeichnis & "\DeinCookie.txt" For Output As #1
Print ThisWorkbook.Path
Close #1
Den Sprung zurück in die Ursprungsdatei müsstest du ebenfalls mit VBA gestalten (Open For Input).
Gruss
Chris
PS: Funktion wird fehlerhaft angezeigt d.h. Private Declare und

Function in gleicher Zeile (Zeilenschaltungen entfernen), ebenfalls mit Public

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige