Anzeige
Archiv - Navigation
720to724
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
720to724
720to724
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Überprüfen, ob Datei in "Eigene Dateien" liegt

Überprüfen, ob Datei in "Eigene Dateien" liegt
20.01.2006 14:26:09
Gerhard
Hallo,
ich will per VBA auslesen lassen, ob der Pfad der geöffneten Datei das Homeverzeichnis (also "Eigene Dateien") ist oder nicht.
Es darf aber kein fester Pfad zum Homeverzeichnis eingetragen werden, da es ja auch vorkommen kann, dass es nicht wie üblich auf C:\ liegt, sondern auf einem Netzlaufwerk.
Ich habe zwar einmal versucht das hinzubekommen, aber es funktioniert nicht. Hier mal der Code, mit dem ich es versucht habe:

Sub aktueller_pfad()
If Application.ActiveWorkbook.Path = Environ("homepath") _
Then
MsgBox "Aktueller Pfad ist 'Eigene Dateien'"
Else
MsgBox "Aktueller Pfad ist  n i c h t  'Eigene Dateien'"
End If
End Sub

Wenn mir jemand weiterhelfen könnte, wäre das toll.
Gruß
Gerhard

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Überprüfen, ob Datei in "Eigene Dateien" liegt
20.01.2006 14:41:02
UweD
Hallo
so könnte es gehen...

Sub aktueller_pfad()
xx = Environ("homedrive") & Environ("homepath")
yy = Application.ActiveWorkbook.Path
If xx = yy Then
MsgBox "Aktueller Pfad ist 'Eigene Dateien'"
Else
MsgBox "Aktueller Pfad ist  n i c h t  'Eigene Dateien'"
End If
End Sub

Gruß UweD
(Rückmeldung wäre schön)
AW: Überprüfen, ob Datei in "Eigene Dateien" liegt
20.01.2006 16:19:20
Gerhard
Hallo Uwe,
es funktioniert leider immer noch nicht.
Ich bekomme immer noch angezeigt, dass ich mich angeblich nicht im Ordner "Eigene Dateien" befinde, obwohl ich von dort das Makro starte. Ich verstehe nur nicht, dass ich aber mit dem folgenden Code den Pfad auslesen kann:

Sub Eigene_Dateien()
Dim strVerzeichnis As String
strVerzeichnis = Environ("homedrive") & Environ("homepath")
MsgBox strVerzeichnis & ""
End Sub

Also kann Excel ja den Pfad zum Homeverzeichnis richtig auslesen, auch wenn er nicht wie standardmäßig auf C: liegt. Ich verstehe nicht, dass das in der If-Anweisung nicht funktioniert.
Gruß
Gerhard
Anzeige
AW: Überprüfen, ob Datei in "Eigene Dateien" liegt
20.01.2006 16:49:17
UweD
Hallo
Der "Application.ActiveWorkbook.Path" wird erst vergeben, wenn die Datei gespeichert ist. kann es daran liegen?
Gruß UweD
(Rückmeldung wäre schön)
AW: Überprüfen, ob Datei in "Eigene Dateien" liegt
20.01.2006 18:39:32
Gerhard
Hallo Uwe,
ich habe es jetzt einmal zu Hause auf Excel XP probiert.
Da geht es auch nicht. Obwohl ich die Tabelle in "Eigene Dateien" gespeichert habe, bekomme ich immer die Meldung, dass der aktuelle Pfad nicht dort wäre.
Noch eine Idee, woran es liegen könnte?
Gruß
Gerhard
AW: Überprüfen, ob Datei in "Eigene Dateien" liegt
21.01.2006 13:28:52
Nepumuk
Hi,
über Environ bekommst du nur die Standardpfade. So kommst du an die tatsächlichen:
Option Explicit

Public Declare Function SHGetPathFromIDList Lib "shell32.dll" ( _
    ByVal pidl As Long, _
    ByVal pszPath As String) As Long
Public Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" ( _
    ByVal hWndOwner As Long, _
    ByVal nFolder As Long, _
    ByRef pidl As tpItemIDList) As Long
Public Declare Function CoTaskMemFree Lib "ole32.dll" ( _
    ByRef hMem As Long) As Long

Public Const CSIDL_CONTROLLS = &H3
Public Const CSIDL_COOKIES = &H21
Public Const CSIDL_COMMON_ADMINTOOLS = &H2F
Public Const CSIDL_COMMOM_ALTSTARTUP = &H1E
Public Const CSIDL_COMMON_APPDATA = &H23
Public Const CSIDL_COMMON_DESKTOPDIREKTORY = &H19
Public Const CSIDL_COMMON_DOCUMENTS = &H2E
Public Const CSIDL_COMMON_FAVORITES = &H1F
Public Const CSIDL_COMMON_MUSIC = &O35
Public Const CSIDL_COMMON_PICTURES = &O36
Public Const CSIDL_COMMON_PROGRAMS = &O17
Public Const CSIDL_COMMON_STARTMENU = &H16
Public Const CSIDL_COMMON_STARTUP = &H18
Public Const CSIDL_COMMON_TEMPLATES = &H20
Public Const CSIDL_COMMON_VIDEO = &H2D
Public Const CSIDL_DESKTOP = &H0
Public Const CSIDL_DESKTOPDIRECTORY = &H10
Public Const CSIDL_FAVORITES = &H6
Public Const CSIDL_FONTS = &H14
Public Const CSIDL_HISTORY = &H22
Public Const CSIDL_INTERNET_CACHE = &H20
Public Const CSIDL_INTERNET = &H1
Public Const CSIDL_DRIVES = &H11
Public Const CSIDL_PERSONAL = &H5
Public Const CSIDL_NETWORK = &H12
Public Const CSIDL_NETHOOD = &H13
Public Const CSIDL_PRINTERS = &H4
Public Const CSIDL_PRINTHOOD = &H1B
Public Const CSIDL_PROGRAMS = &H2
Public Const CSIDL_RECENT = &H8
Public Const CSIDL_BITBUCKET = &HA
Public Const CSIDL_SENDTO = &H9
Public Const CSIDL_STARTMENU = &HB
Public Const CSIDL_STARTUP = &H7
Public Const CSIDL_TEMPLATES = &H15
Public Const CSIDL_WINDOWS = &H24

Public Enum enSpecialFolders
    spControlPanel = CSIDL_CONTROLLS
    spCookies = CSIDL_COOKIES
    spCommonAdminTools = CSIDL_COMMON_ADMINTOOLS
    spCommonAltStartup = CSIDL_COMMOM_ALTSTARTUP
    spCommonAppData = CSIDL_COMMON_APPDATA
    spCommonDesktopDirectory = CSIDL_COMMON_DESKTOPDIREKTORY
    spCommonDocuments = CSIDL_COMMON_DOCUMENTS
    spCommonFavorites = CSIDL_COMMON_FAVORITES
    spCommonMusic = CSIDL_COMMON_MUSIC
    spCommonPictures = CSIDL_COMMON_PICTURES
    spCommonPrograms = CSIDL_COMMON_PROGRAMS
    spCommonStartmenu = CSIDL_COMMON_STARTMENU
    spCommonStartup = CSIDL_COMMON_STARTUP
    spCommonTemplates = CSIDL_COMMON_TEMPLATES
    spCommonVideo = CSIDL_COMMON_VIDEO
    spDesktopUser = CSIDL_DESKTOP
    spDesktopDir = CSIDL_DESKTOPDIRECTORY
    spFavorites = CSIDL_FAVORITES
    spFonts = CSIDL_FONTS
    spHistory = CSIDL_HISTORY
    spInternetCache = CSIDL_INTERNET_CACHE
    spInternetVirtualFolder = CSIDL_INTERNET
    spMyComputerDrives = CSIDL_DRIVES
    spMyDocuments = CSIDL_PERSONAL
    spNetWorkRoot = CSIDL_NETWORK
    spNetHood = CSIDL_NETHOOD
    spPrinters = CSIDL_PRINTERS
    spPrintHood = CSIDL_PRINTHOOD
    spStatMenuPrograms = CSIDL_PROGRAMS
    sprecent = CSIDL_RECENT
    spRecycleBin = CSIDL_BITBUCKET
    spSendTo = CSIDL_SENDTO
    spStartMenu = CSIDL_STARTMENU
    spStartup = CSIDL_STARTUP
    spTemplates = CSIDL_TEMPLATES
    spWindows = CSIDL_WINDOWS
End Enum

Public Type tpShortItemId
    cb As Long
    abID As Byte
End Type

Public Type tpItemIDList
    mkid As tpShortItemId
End Type

Public Function GetSpecialFolder(lngSpecialFolder As enSpecialFolders) As String
    Dim lngRet As Long
    Dim strPath As String
    Dim typIDL As tpItemIDList
    lngRet = SHGetSpecialFolderLocation(0, lngSpecialFolder, typIDL)
    If lngRet = 0 Then
        strPath = Space(512)
        lngRet = SHGetPathFromIDList(ByVal typIDL.mkid.cb, ByVal strPath)
        Call CoTaskMemFree(typIDL.mkid.cb)
        If lngRet Then GetSpecialFolder = Left(strPath, InStr(strPath, Chr(0)) - 1) & "\"
    End If
End Function

Public Sub test()
    MsgBox GetSpecialFolder(spMyDocuments)
End Sub

Gruß
Nepumuk

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige