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>

コードの説明:

  1. <!DOCTYPE html><html><head><title>: HTML の基本的な構造です。
  2. <hta:application>: HTA アプリケーションの設定を行います。
    • applicationname: アプリケーションの名前。
    • border: ウィンドウのボーダーの種類。
    • caption: タイトルバーを表示するかどうか。
    • その他の属性はウィンドウの表示や動作に関する設定です。
  3. <script language="VBScript">: VBScript のコードを記述するセクションです。
  4. Sub SelectFolder(): フォルダ選択処理を行うサブルーチンです。
  5. Dim objShell, objFolder, strFolderPath: 使用する変数を宣言します。
  6. Set objShell = CreateObject("Shell.Application"): Shell.Application オブジェクトのインスタンスを作成します。このオブジェクトは、Windows シェルの機能を利用するために使用されます。
  7. Set objFolder = objShell.BrowseForFolder(0, "フォルダを選択してください", &H1, ""): BrowseForFolder メソッドを呼び出してフォルダ選択ダイアログを表示します。
    • 第1引数 (0): 親ウィンドウのハンドルを指定します。通常は 0 を指定します。
    • 第2引数 ("フォルダを選択してください"): ダイアログボックスのタイトルを指定します。
    • 第3引数 (&H1): オプションを指定します。&H1 は「新しいフォルダを作成」オプションを有効にするフラグです。他のオプションについては、Microsoft のドキュメントを参照してください。
    • 第4引数 (""): 初期フォルダを指定します。省略すると、通常はデスクトップが表示されます。特定のパスを指定することも可能です。
  8. If Not objFolder Is Nothing Then ... Else ... End If: BrowseForFolder メソッドが正常にフォルダを返したかどうかを確認します。キャンセルされた場合は Nothing が返ります。
  9. strFolderPath = objFolder.Self.Path: 選択されたフォルダのパスを取得します。
  10. MsgBox "選択されたフォルダ: " & strFolderPath: 選択されたフォルダのパスをメッセージボックスに表示します。
  11. MsgBox "フォルダが選択されませんでした。": フォルダが選択されなかった場合に表示するメッセージです。
  12. Set objFolder = NothingSet objShell = Nothing: 使用済みのオブジェクトを解放します。
  13. </script>: スクリプトセクションの終了タグです。
  14. </head>: ヘッダセクションの終了タグです。
  15. <body>: ボディセクションの開始タグです。
  16. <button onclick="SelectFolder()">フォルダを選択</button>: フォルダ選択ダイアログを表示するためのボタンを作成します。ボタンがクリックされると、SelectFolder サブルーチンが実行されます。
  17. </body>: ボディセクションの終了タグです。
  18. </html>: HTML ドキュメントの終了タグです。

使用方法:

  1. 上記のコードをテキストエディタにコピーします。
  2. ファイル名を .hta 拡張子で保存します(例: folder_select.hta)。
  3. 保存した .hta ファイルを実行すると、フォルダ選択ダイアログを表示するウィンドウが開きます。
  4. 「フォルダを選択」ボタンをクリックすると、フォルダ選択ダイアログボックスが表示されます。

その他のオプション:

BrowseForFolder メソッドの第3引数(オプション)には、さまざまなフラグを指定できます。例えば、フォルダだけでなくネットワーク上の共有フォルダも選択できるようにしたり、ダイアログの表示形式を変更したりできます。詳細については、Microsoft のドキュメントで BrowseForFolder メソッドのオプションを確認してください。

この方法で、HTA+VBScript で簡単にフォルダ選択ダイアログボックスを表示することができます。


コメント

このブログの人気の投稿

HTA+JScriptでウインドウのサイズ変更するプログラム

PDFって編集できないからビジネスで使われてたと思うんだけど、それを編集できるようにするって・・・

PortProtonとは

Windows Media Playerで動画を見ようとしたら「サーバーの実行に失敗しました」って出て見れません。どうしたらいいですか?Gemini先生~

教えてGemini先生!HTMLでScriptを描く書く場所はどこがいいの?最近はbody内に書く人が多いような・・・

HTA (HTML Application)

右翼・左翼とは?教えてGemini先生

JavaScript ステートメント一覧

Gemini先生、塩ラーメンが食べたくなっちゃったので超絶うまい塩ラーメンスープのレシピを教えてくださーい