タグ: VBA エクセル FSO

WSHを使用する方法

example(VBA)

Function GetSpecialFolderPath() As String
    Dim Path As String, WSH As Variant
    Set WSH = CreateObject("Wscript.Shell")
    Sample3 = WSH.SpecialFolders("Desktop") & "\"
    Set WSH = Nothing
End Function

引数

フォルダ

引数

AllUsersDesktop

フォルダ

共通のデスクトップ

引数

AllUsersPrograms

フォルダ

共通のプログラムメニュー

引数

AllUsersStartup

フォルダ

共通のスタートアップ

引数

Desktop

フォルダ

ログインユーザーのデスクトップ

引数

Programs

フォルダ

ログインユーザーのプログラムメニュー

引数

Startup

フォルダ

ログインユーザーのスタートアップ

引数

Favorites

フォルダ

お気に入り

引数

MyDocuments

フォルダ

マイドキュメント


APIを直接使用する方法

example(VBA)

Declare Function SHGetSpecialFolderLocation Lib "SHELL32.DLL" _
                 (ByVal hWndOwner As Long, ByVal nFolder As Long, ppidl As Long) As Long

Declare Function SHGetPathFromIDList Lib "SHELL32.DLL" _
                 (ByVal pidl As Long, ByVal pszPath As String) As Long

Function GetSpectialDirPath() As String
  Const CSIDL_PERSONAL = &H5
  Const MAX_PATH = 256
  Dim buff  As String
  Dim SpFolderLocation As Long
  Dim resRet As Long

  resRet = SHGetSpecialFolderLocation(Application.hWnd, CSIDL_PERSONAL, lngSpFolderLocation)
  buff = Space(MAX_PATH)
  If lngSpFolderLocation <> 0 Then
    resRet = SHGetPathFromIDList(lngSpFolderLocation, buff)
    GetSpectialDirPath = Left(buff, InStr(buff, vbNullChar) - 1)
  Else
    GetSpectialDirPath = ""
  End If

End Function