HTA+VBScriptでフォルダ選択ダイアログボックスを表示する方法
HTA(HTML Application)と VBScript を組み合わせてフォルダ選択ダイアログボックスを表示する方法はいくつかありますが、一般的なのは Shell.Application オブジェクトの BrowseForFolder メソッドを使用する方法です。
以下に基本的なコード例を示します。
HTML
<!DOCTYPE html>
<html>
<head>
<title>フォルダ選択</title>
<hta:application
applicationname="FolderSelect"
border="thin"
caption="yes"
icon=""
maximizebutton="no"
minimizebutton="yes"
scroll="no"
showintaskbar="yes"
singleinstance="yes"
sysmenu="yes"
windowstate="normal"
>
<script language="VBScript">
Sub SelectFolder()
Dim objShell, objFolder, strFolderPath
' Shell.Application オブジェクトを作成
Set objShell = CreateObject("Shell.Application")
' フォルダ選択ダイアログを表示
' 引数の説明:
' 0: 親ウィンドウのハンドル (通常は 0)
' "フォルダを選択してください": ダイアログのタイトル
' &H1: オプション (ここでは新しいフォルダを作成するオプションを有効に)
' ": 初期フォルダ (省略可能)
Set objFolder = objShell.BrowseForFolder(0, "フォルダを選択してください", &H1, "")
' フォルダが選択されたか確認
If Not objFolder Is Nothing Then
strFolderPath = objFolder.Self.Path
MsgBox "選択されたフォルダ: " & strFolderPath
Else
MsgBox "フォルダが選択されませんでした。"
End If
' オブジェクトを解放
Set objFolder = Nothing
Set objShell = Nothing
End Sub
</script>
</head>
<body>
<button onclick="SelectFolder()">フォルダを選択</button>
</body>
</html>
コードの説明:
<!DOCTYPE html>、<html>、<head>、<title>: HTML の基本的な構造です。<hta:application>: HTA アプリケーションの設定を行います。applicationname: アプリケーションの名前。border: ウィンドウのボーダーの種類。caption: タイトルバーを表示するかどうか。- その他の属性はウィンドウの表示や動作に関する設定です。
<script language="VBScript">: VBScript のコードを記述するセクションです。Sub SelectFolder(): フォルダ選択処理を行うサブルーチンです。Dim objShell, objFolder, strFolderPath: 使用する変数を宣言します。Set objShell = CreateObject("Shell.Application"):Shell.Applicationオブジェクトのインスタンスを作成します。このオブジェクトは、Windows シェルの機能を利用するために使用されます。Set objFolder = objShell.BrowseForFolder(0, "フォルダを選択してください", &H1, ""):BrowseForFolderメソッドを呼び出してフォルダ選択ダイアログを表示します。- 第1引数 (0): 親ウィンドウのハンドルを指定します。通常は
0を指定します。 - 第2引数 ("フォルダを選択してください"): ダイアログボックスのタイトルを指定します。
- 第3引数 (&H1): オプションを指定します。
&H1は「新しいフォルダを作成」オプションを有効にするフラグです。他のオプションについては、Microsoft のドキュメントを参照してください。 - 第4引数 (""): 初期フォルダを指定します。省略すると、通常はデスクトップが表示されます。特定のパスを指定することも可能です。
- 第1引数 (0): 親ウィンドウのハンドルを指定します。通常は
If Not objFolder Is Nothing Then ... Else ... End If:BrowseForFolderメソッドが正常にフォルダを返したかどうかを確認します。キャンセルされた場合はNothingが返ります。strFolderPath = objFolder.Self.Path: 選択されたフォルダのパスを取得します。MsgBox "選択されたフォルダ: " & strFolderPath: 選択されたフォルダのパスをメッセージボックスに表示します。MsgBox "フォルダが選択されませんでした。": フォルダが選択されなかった場合に表示するメッセージです。Set objFolder = Nothing、Set objShell = Nothing: 使用済みのオブジェクトを解放します。</script>: スクリプトセクションの終了タグです。</head>: ヘッダセクションの終了タグです。<body>: ボディセクションの開始タグです。<button onclick="SelectFolder()">フォルダを選択</button>: フォルダ選択ダイアログを表示するためのボタンを作成します。ボタンがクリックされると、SelectFolderサブルーチンが実行されます。</body>: ボディセクションの終了タグです。</html>: HTML ドキュメントの終了タグです。
使用方法:
- 上記のコードをテキストエディタにコピーします。
- ファイル名を
.hta拡張子で保存します(例:folder_select.hta)。 - 保存した
.htaファイルを実行すると、フォルダ選択ダイアログを表示するウィンドウが開きます。 - 「フォルダを選択」ボタンをクリックすると、フォルダ選択ダイアログボックスが表示されます。
その他のオプション:
BrowseForFolder メソッドの第3引数(オプション)には、さまざまなフラグを指定できます。例えば、フォルダだけでなくネットワーク上の共有フォルダも選択できるようにしたり、ダイアログの表示形式を変更したりできます。詳細については、Microsoft のドキュメントで BrowseForFolder メソッドのオプションを確認してください。
この方法で、HTA+VBScript で簡単にフォルダ選択ダイアログボックスを表示することができます。
コメント
コメントを投稿