Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1508to1512
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

Pfad für "Eigene Dateien" VBA

Pfad für "Eigene Dateien" VBA
28.08.2016 18:39:51
Henner
Guten Tag zusammen
Ich möchte den Pfad zu "Eigene Dateien" per VBA ermitteln, dies relativ zuverlässig für die gängigsten Win Versionen (bspw. XP, 9, 10). Dafür habe ich im Netz verschiedenste Lösungsansätze gefunden, diese führen bei Win10 allerdings nicht zu "Eigene Dateien" sondern zu "Eigene Dateien/Eigene Dokumente".
Folgende ("Schummel-")Lösung funktioniert bei mir nun sehr zuverlässig, ich frage mich aber ob es auch einfacher und vor allem eleganter geht:

Sub EigeneDateien()
Set WshShell = CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
strMyData = Left(strDesktop, Len(strDesktop) - 7)
MsgBox strMyData
Set WshShell = Nothing
End Sub

Lösung 1 aus dem Netz: (Pfad entspricht "Eigene Dokumente")
(Autor unbekannt)

Sub EigeneDateien()
Set WshShell = CreateObject("WScript.Shell")
strMyDocuments = WshShell.SpecialFolders("MyDocuments")
MsgBox strMyDocuments
Set WshShell = Nothing
End Sub

Lösung 2 aus dem Netz: (Pfad entspricht auch "Eigene Dokumente")
(Autor: Nepumuk)

Sub EigeneDateien()
' Modul: Modul1 Typ: Allgemeines Modul
Option Explicit
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 ITEMIDLIST) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Type ITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As ITEMID
End Type
Private Enum Foldertype
V_DESKTOP = &H0
R_PROGRAMME = &H2
V_SYSTEMSTEUERUNG = &H3
V_DRUCKER = &H4
R_EIGENE_DATEIEN = &H5
R_FAVORITEN = &H6
R_AUTOSTART = &H7
R_DOKUMENTE = &H8
R_SENDEN_AN = &H9
V_PAPIERKORB = &HA
R_STARTMENÜ = &HB
R_DESKTOP = &H10
V_ARBEITSPLATZ = &H11
V_NETZWERKUMGEBUNG = &H12
R_NETZWERKUMGEBUNG = &H13
R_FONTS = &H14
R_NEW_SHELL = &H15
R_TEMP_INTERNET = &H20
End Enum
Private Const NOERROR = 0
Private Const GC_CLASSNAMEMSEXCEL = "XLMAIN"
Private Function GetPath(enum_Folder As Foldertype) As String
Dim lngResult As Long, strBuffer As String
Dim udtIDL As ITEMIDLIST
lngResult = SHGetSpecialFolderLocation(FindWindow _
(GC_CLASSNAMEMSEXCEL, vbNullString), enum_Folder, udtIDL)
If lngResult = NOERROR Then
strBuffer = Space$(512)
lngResult = SHGetPathFromIDList(ByVal udtIDL.mkid.cb, ByVal strBuffer)
If lngResult Then GetPath = Trim$(strBuffer)
End If
End Function
Public Sub test()
Dim strPath As String
strPath = GetPath(R_EIGENE_DATEIEN)
If Trim$(strPath)  "" Then
strPath = Left$(strPath, Len(strPath) - 1)
MsgBox strPath
End If
End Sub

Für konstruktive Vorschläge bedanke ich mich im Voraus, ansonsten habe ich ja eine funktionierende Lösung.
Schönen Sonntag Abend & Gruss, Henner

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pfad für "Eigene Dateien" VBA
28.08.2016 19:08:14
Hajo_Zi
Hallo Henner,
MsgBox Application.DefaultFilePath

AW: Pfad für "Eigene Dateien" VBA
28.08.2016 19:48:29
Henner
Hallo Hajo,
vielen Dank für Deine Antwort. Dein Vorschlag führt jedoch leider auch zu "Eigene Dateien/Eigene Dokumente".
Gruss Henner
AW: Pfad für "Eigene Dateien" VBA
28.08.2016 19:50:49
Hajo_Zi
Hallo Henner,
dann hat Dein Ordner den Namen.
Bei mir wird W:\Eigene Dateien angezeigt.
Gruß Hajo
AW: Pfad für "Eigene Dateien" VBA
28.08.2016 19:59:59
Henner
Guten Abend Hajo,
das ist interessant. Bei mir gibt es im Ordner "Eigene Dateien" nochmals einen Unterordner "Eigene Dokumente", der wurde aber von WIN so angelegt. Lege ich nun eine Datei mit Deiner Methode ab, wird sie im Unterordner "Eigene Dokumente" gespeichert - und genau das möchte ich ja nicht.
Zur Info: Die Varianten von User "Planlos" funktionieren bei mir einwandfrei und greifen auf "Eigene Dateien" - ohne Unterordner - zu. Eventuell lässt sich der Default Ordner von Excel irgendwo definieren oder ändern, dann würde Deine Methode evtl. auch funktionieren. Ich habe jedoch nicht immer Zugriff auf die PCs wo es funktionieren soll, daher brauche ich eine zuverlässige andere Lösung.
Trotzdem vielen Dank für Deine Hilfe. Schönen Abend, Gruss Henner
Anzeige
AW: Pfad für "Eigene Dateien" VBA
28.08.2016 20:02:52
Hajo_Zi
Hallo Henner,
Windows Explorer, Dokumente, Eigenschaften, Pfad. Was wird da angezeigt.
Gruß Hajo
AW: Pfad für "Eigene Dateien" VBA
28.08.2016 20:09:15
Henner
Hallo Hajo
Gemäss Deiner Anleitung:

C:\Users\Max Mustermann\Documents
Ziel soll aber sein:

C:\Users\Max Mustermann

Gruss Henner
AW: Pfad für "Eigene Dateien" VBA
28.08.2016 20:11:45
Hajo_Zi
Hallo Henner,
Du möchtest also keinen Unterordner mehr haben unter Max Mustermann. Ich würde sowas ja ablehnen.
Warum änderst Du den Pfad dann nicht?
Gruß Hajo
Anzeige
AW: Pfad für "Eigene Dateien" VBA
28.08.2016 20:20:33
Henner
Hallo Hajo
Doch ich möchte noch Unterordner in "Eigene Dateien" haben, da bleibt alles wie es ist. Zudem ist das auch auf jedem PC anders. Der per VBA ermittelte Pfad soll aber NICHT in einem Unterordern sein damit es kompatibel bleibt.
Schaue Dir die Lösung von "Planlos" an, das ist genau das was ich benötige. Gruss Henner
AW: Pfad für "Eigene Dateien" VBA
28.08.2016 19:18:30
Planlos
Hallo
wenn et lüpt dann lüpt et, also warum ändern. Und der eigene Code ist erstmal immer am elegantesten. ;-)
Aba jut hier noch 2 Vorschläge:
1. "Environ$("USERPROFILE")
2. Im Code von Nepumuk die Zeile "strPath = GetPath(R_EIGENE_DATEIEN)" durch "strPath = GetPath(40)" ersetzen.
Anzeige
AW: Pfad für "Eigene Dateien" VBA
28.08.2016 19:53:58
Henner
Hallo Unbekannter,
so planlos scheinst Du ja gar nicht zu sein ;-) Beide Deiner Varianten funktionieren einwandfrei. Kannst Du eine Aussage dazu machen wie zuverlässig sie bei anderen WIN Versionen funktionieren?
Besten Dank und Gruss, Henner
AW: Pfad für "Eigene Dateien" VBA
28.08.2016 20:37:45
Planlos
Hallo
der wert 40 (CSIDL_PROFILE) sollte lt. https://msdn.microsoft.com/en-us/library/windows/desktop/bb762494(v=vs.85).aspx ab xp laufen.
Bei der eviron - variante kann ich nix genaues sagen, 7 und 10 funktionieren jedenfalls, aber sie ist u.U nicht safe wenn der user z.b. Excel mittels Batch startet und dort den Path selbst setzt (set userprofile=Z:\kaputt). Ist dies der Fall dann funktioniert deine Methode 1 aber auch nicht mehr zuverlässig.
Anzeige
AW: Pfad für "Eigene Dateien" VBA
28.08.2016 20:46:14
Henner
Hallo,
ich nehme die Wert 40 Variante. Macht auf mich einen soliden Eindruck und ist schmaler als meine Bastelei. Vielen Dank und Gruss, Henner
AW: Pfad für "Eigene Dateien" VBA
29.08.2016 00:10:47
snb

Sub M_snb()
MsgBox CreateObject("wscript.shell").SpecialFolders(16)
' oder
MsgBox CreateObject("wscript.shell").SpecialFolders("MyDocuments")
End Sub

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige