|
こんにちは。かみちゃん です。
>C:\Documents and Settings\(ユーザ名)\Application Data
>に保存できる方法はないでしょうか?
私は、特殊フォルダのパスをSHGetSpecialFolderPathというAPIを使って、以下のような方法で取得しています。
(WindowsXP Pro + Excel2000 SR-1 で動作確認済みです)
Macro1マクロを実行してみてください。
'------------------------------------------------------------
'特殊フォルダのパスを取得
'【参照URL】
'http://www.wainet.ne.jp/~ko-ichi/sample/sppath.htm
'------------------------------------------------------------
'APIを宣言
Public Declare Function SHGetSpecialFolderPath Lib "shell32.dll" Alias "SHGetSpecialFolderPathA" _
(ByVal hwndOwner As Long, ByVal lpszPath As String, ByVal nFolder As Long, ByVal fCreate As Long) As Long
'hwndOwner :0でいい
'lpszPath :戻り値を格納するバッファ
'nFolder :CSIDL定数
'fCreate :1のとき、無かったら作成する 0だと作成しない
'CSIDL定数一覧
Public Const CSIDL_DESKTOP = &H0& 'デスクトップ
Public Const CSIDL_INTERNET = &H1& 'Internet Explorer
Public Const CSIDL_PROGRAMS = &H2& 'スタートメニュー\プログラム
Public Const CSIDL_CONTROLS = &H3& 'コントロール パネル
Public Const CSIDL_PRINTERS = &H4& 'プリンタ
Public Const CSIDL_PERSONAL = &H5& 'マイドキュメント
Public Const CSIDL_FAVORITES = &H6& 'お気に入り
Public Const CSIDL_STARTUP = &H7& 'スタートアップ
Public Const CSIDL_RECENT = &H8& '最近使ったファイル
Public Const CSIDL_SENDTO = &H9& '送る
Public Const CSIDL_BITBUCKET = &HA& 'ごみ箱
Public Const CSIDL_STARTMENU = &HB& 'スタートメニュー
Public Const CSIDL_MYMUSIC = &HD& 'マイミュージック
Public Const CSIDL_MYVIDEO = &HE& 'マイビデオ
Public Const CSIDL_DESKTOPDIRECTORY = &H10& 'デスクトップディレクトリ
Public Const CSIDL_DRIVES = &H11& 'マイ コンピュータ
Public Const CSIDL_NETWORK = &H12& 'マイネットワーク
Public Const CSIDL_NETHOOD = &H13& 'ネットワーク
Public Const CSIDL_FONTS = &H14& 'フォント
Public Const CSIDL_TEMPLATES = &H15& 'テンプレート
Public Const CSIDL_APPDATA = &H1A& 'アプリケーションデータ
Public Const CSIDL_PRINTHOOD = &H1B& 'プリンタ
Public Const CSIDL_LOCAL_APPDATA = &H1C& 'ローカルアプリケーションデータ
Public Const CSIDL_ALTSTARTUP = &H1D& '非ローカライズスタートアップ
Public Const CSIDL_INTERNET_CACHE = &H20& 'インターネットキャッシュ
Public Const CSIDL_COOKIES = &H21& 'クッキー(IE)
Public Const CSIDL_HISTORY = &H22& '履歴(IE)
Public Const CSIDL_WINDOWS = &H24& 'Windowsディレクトリ
Public Const CSIDL_SYSTEM = &H25& 'Systemディレクトリ
Public Const CSIDL_PROGRAM_FILES = &H26& 'C:\Program Files
Public Const CSIDL_MYPICTURES = &H27& 'マイピクチャ
Public Const CSIDL_PROFILE = &H28& 'プロファイル
Public Const CSIDL_ADMINTOOLS = &H30& '管理ツール
Public Const CSIDL_CONNECTIONS = &H31& 'ネットワーク接続
'------------------------------------------------------------------------------
'特殊フォルダのフルパスを取得
'lngFolder :特殊フォルダをCSIDL定数で指定
Public Function SHGetFoldPath(ByVal lngFolder As Long) As String
Dim strBuffer As String
Dim lngRet As Long
strBuffer = String(256, vbNullChar)
lngRet = SHGetSpecialFolderPath(0, strBuffer, lngFolder, 0)
SHGetFoldPath = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
End Function
Sub Macro1()
MsgBox SHGetFoldPath(CSIDL_LOCAL_APPDATA)
End Sub
|
|