VBA / VB6 - マイドキュメント+環境変数
![](http://img.brin-designs.com/img/games/513/vba-vb6-my-documents-environment-variables.png)
Windowsエクスプローラに表示されるように、マイドキュメントフォルダはルートにあるように見えますが、そうではありません。 C:\ Documents and Settingsのサブディレクトリにあります。 問題は、このサブディレクトリがユーザーの名前を取り、あるPCから別のPCに変更されるだけでなく、複数のユーザーをサポートするPC上でも変更されることです。
次のコードでは、ログオンしているユーザーに関係なく、デフォルトでマイドキュメントフォルダにアクセスできます。
VBAとは
次のコードを一般的なモジュールに貼り付けるだけです。明示的なオプション
プライベートタイプ
CBとして
バイトとしてabID
エンドタイプ
プライベートタイプ
SHITEMIDとしてmkid
エンドタイプ
プライベート定数CSIDL_PERSONAL As Long =&H5
プライベート宣言関数SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwnerの長さ、ByValのnFolderの長さ、_
pidl As ITEMIDLIST)として
プライベート宣言関数SHGetPathFromIDList Lib "shell32.dll"エイリアス "SHGetPathFromIDListA" _
長さとしてのByVal pidl、長さとしてのStringとしてのByVal pszPath
文字列としてのパブリック関数Rep_Documents()
Dim lRetを長く、IDLをITEMIDLISTとして、sPathを文字列として
lRet = SHGetSpecialFolderLocation(100&、CSIDL_PERSONAL、IDL)
lRet = 0の場合
sPath =文字列$(512、Chr $(0))
lRet = SHGetPathFromIDList(ByVal IDL.mkid.cb、ByVal sPath)
Rep_Documents = Left $(sPath、InStr(sPath、Chr $(0)) - 1)
そうでなければ
Rep_Documents = vbNullString
終了の場合
終了機能
関数を呼び出すには、ボタンを作成して次のコードを貼り付けるだけです。
Private Sub CommandButton1_Click()
セル(5、2)= Rep_Documents()
終了サブ
VB6とは
VB6では、環境変数UserProfileを使用します(これはVBAでも機能します)。文字列として薄暗いsPathUsersPathUser = Environ $( "USERPROFILE")& "\ my documents \"
MsgBox sPathUser
環境機能
Environ $関数は、環境変数の値を受け取るために使用されます。たとえば、WINDIRコマンド(Windows)を使用した場合は、Windowsがインストールされているフォルダ(C:\ Windows \)を取得したはずです。
これらの変数は、Runユーティリティを介して、およびVBやVBAなどのプログラミング環境で、バッチファイルで使用できます。
- %UserProfile%と入力すると、現在のユーザーが参照されます。
- 「%UserProfile%\ My Documents」と入力すると、My Documentsフォルダが参照されます。
- %WinDir%と入力すると、Windowsフォルダが取得されます。
- %tmp%と入力すると、一時ファイルにアクセスできます。
Windowsの変数
- デフォルトユーザーの変数
- TEMP一時ディレクトリ
- TMP一時ディレクトリ
- システム変数
- コマンドプロンプトのComSpec変数パス。
- FP_NO_HOST_CHECK
- NUMBER_OF_PROCESSORS
- OS使用中のOSを返します。
- パス?
- PATHEXT?
- PROCESSOR_ARCHITECTUREプロセッサアーキテクチャ(x86など)を返します。
- PROCESSOR_IDENTIFIERプロセッサIDを返します。
- PROCESSOR_LEVEL?
- PROCESSOR_REVISIONプロセッサのリビジョン数を返します
- TEMP一時ディレクトリ
- TMP一時ディレクトリ
- Windowsがインストールされているwindirフォルダ。
- WindowsがインストールされているSystemRootフォルダ。