カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

環境変数(Environ)

VisualBasicでWindowsの環境変数を利用する方法をご紹介します。

例)Explorerなどを起動する

Call Shell("explorer")

実行ファイル名(拡張子を除く)のみでOK。パスは環境変数Pathから取得してくれます。

その他の環境変数の取得

書式

Environ("環境変数名")

Windowsディレクトリ
※WindowsディレクトリはOSによって「windows」や「winnt」などと違いがあるので注意

Environ("windir")

ユーザーディレクトリ

Environ("userprofile") 'C:\Documents and Settings\Administrator

ProgramFilesのパス

Environ("ProgramFiles") 'C:\Program Files

CommonProgramFilesのパス

Environ("CommonProgramFiles") 'C:\Program Files\Common Files

Application Dataディレクトリのパス

Environ("appdata") 'C:\Documents and Settings\Administrator\Application Data

環境変数名はマイコンピュータのプロパティからも調べられますが、
コマンドプロンプトで「set」コマンドを引数なしで実行するほうが早いです。

「set」コマンドを実行すると、環境変数とその値が出力されます。

3,816 views

コンボボックスのインデックスを指定

Combo1.ListIndex = 1

等と指定するとエラーが発生する
正しくは

Combo1.AutoExpand = True '自動拡張をオン
Combo1.Value = "***"

1つまたは複数の文字をコンボボックスに入力したときに、
入力した文字と一致する値をコンボボックスのリストから自動的に表示するかどうかを示します

3,660 views

未定義関数Dir 解決法

ACCESSのMDBファイルを使用していて、何らかのプロシージャを実行したとき、
未定義関数Dirがあります等のエラーが発生することがある。

【解決法】
レジストリのSandboxModeの値を2にする

【操作】
スタートからファイル名を指定して実行を選択し、
「regedit」と入力しEnter。

レジストリエディタが起動するので、検索で「SandBoxMode」を探すか
以下のパスを辿って見つけて値を変更してください。

\\HKEY_LOCAL_MACHINE\Software\Microsoft\Jet4.0\engines\SandboxMode

※これで解決しない場合、他に考えられる原因はOfficeのアップデートを
適用していない場合があります。
その場合、アップデートすると解決することがあります。


SandBoxModeが見つからない

2019年9月2日追記

通常、レジストリを検索すれば「SandBoxMode」が見つかると思うのですが、特定のバージョンでは見つからない場合があるようです。
今回見つからなかったのはMicrosoft Office 2016の場合でした。
この場合、新たに値を作成すればうまくいきました。

Office 2016の場合は以下のようにパスを辿ってください。
\\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\16.0\Access Connectivity Engine\Engines

そしてEnginesの中に値を作成します。
レジストリエディタの右側のボックスを右クリックし、[新規]-[DWORD(32ビット)値]と選択します。
名前は「SandBoxMode」と入力し、値に2を設定します。

他のバージョンについては以下のURLを参考にしてください。
サンドボックス-モードのオン-オフを切り替えてマクロを無効にする

4,660 views

数値変換

・10進数→16進数(戻り値String)

Hex(N As Long)

・16進数→10進数(戻り値Long)

CLng("&H" & N As String)

参考:http://homepage1.nifty.com/rucio/main/Samples/Sample056Convert10and16.htm

1,738 views

ByVal,ByRef

ByVal(値渡し)…引数の渡し切り
ByRef(参照渡し)…プロシージャ内で引数を元の値自体を変えることができる

1,868 views