Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


61922 / 76732 ←次へ | 前へ→

【19421】Re:WindowsXPにおける特殊フォルダ名の取得
回答  かみちゃん  - 04/11/1(月) 13:05 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>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

0 hits

【19389】オープン制限回数とパスワードの設定 ami 04/10/30(土) 11:32 質問
【19392】Re:オープン制限回数とパスワードの設定 ちゃっぴ 04/10/30(土) 13:29 発言
【19393】Re:オープン制限回数とパスワードの設定 ami 04/10/30(土) 13:48 お礼
【19416】Re:オープン制限回数とパスワードの設定 ami 04/11/1(月) 9:34 質問
【19421】Re:WindowsXPにおける特殊フォルダ名の取得 かみちゃん 04/11/1(月) 13:05 回答
【19425】Re:WindowsXPにおける特殊フォルダ名の取... ami 04/11/1(月) 19:22 お礼
【19423】Re:オープン制限回数とパスワードの設定 Kein 04/11/1(月) 16:31 回答
【19427】Re:オープン制限回数とパスワードの設定 ami 04/11/1(月) 19:30 お礼

61922 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free