BrowseForFolder

ユーザーがフォルダを選択できるようにするダイアログボックスを作成し、選択したフォルダのFolderオブジェクトを返します。

キャンセルした場合NOTHINGを返します。

ファイルを選択させる場合は、ExcelオブジェクトのGetOpenFileNameメソッドを使います。

構文
Folder = Shell.BrowseForFolder( Hwnd, sTitle, iOptions, vRootFolder )
引数
Hwnd(Integer必須
ダイアログボックスの親ウィンドウのハンドル
sTitle(BSTR必須
ダイアログボックス内に表示される文字列
iOptions(Integer必須
BROWSEINFO 構造体のulFlagsメンバーからなる値リストの組み合わせ
vRootFolder(Variant省略可
ダイアログボックスで使用する、ルートフォルダを指定する
戻値
フォルダ選択のダイアログボックスを表示し、選択したフォルダのFolderオブジェクトを返す。

プログラム実行例

選択したファイルを移動する

CONST ssfDRIVES = 17

DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM source = Shell.BrowseForFolder(0, "移動元フォルダを選択してください。", 0, ssfDRIVES)
IF source = NOTHING THEN EXIT

DIM Folder = Shell.BrowseForFolder(0, "移動先フォルダを選択してください。", 0, ssfDRIVES)
IF Folder = NOTHING THEN EXIT

Folder.MoveHere(source)

MSGBOX(source.Self.Path + " を " + Folder.Self.Path + " に移動しました。")
  1. CREATEOLEOBJ
  2. Shell.BrowseForFolder
  3. Shell.Folder.MoveHere
  4. MSGBOX

選択したファイルをコピーする

CONST ssfDRIVES = 17

DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM source = Shell.BrowseForFolder(0, "コピー元フォルダを選択してください。", 0, ssfDRIVES)
IF source = NOTHING THEN EXIT

DIM Folder = Shell.BrowseForFolder(0, "コピー先フォルダを選択してください。", 0, ssfDRIVES)
IF Folder = NOTHING THEN EXIT

Folder.CopyHere(source)

MSGBOX(source.Self.Path + " を " + Folder.Self.Path + " に移動しました。")
  1. CREATEOLEOBJ
  2. Shell.BrowseForFolder
  3. Shell.Folder.CopyHere
  4. MSGBOX

選択したフォルダ内のサブフォルダを取得

CONST ssfDesktop = 0

DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM Folder = Shell.BrowseForFolder(0, "フォルダを選択", 0, ssfDesktop)
DIM FolderItems = Folder.Items

FOR FolderItem IN FolderItems
	IFB FolderItem.IsFolder THEN
		Folder = FolderItem.GetFolder
		PRINT Folder.Title
	ENDIF
NEXT
  1. CREATEOLEOBJ
  2. Shell.BrowseForFolder
  3. Shell.Folder.Items
  4. Shell.FolderItem.IsFolder
  5. Shell.FolderItem.GetFolder
  6. Shell.Folder.Title

選択したフォルダのパスを取得

CONST ssfDesktop = 0

DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM Folder = Shell.BrowseForFolder(0, "フォルダを選択してください。", 0, ssfDesktop)

PRINT Folder.Self.Path
  1. CREATEOLEOBJ
  2. Shell.BrowseForFolder

指定したディレクトリ内のフォルダ・ファイル情報を取得

CONST ssfDesktop = 0

DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM Folder = Shell.BrowseForFolder(0, "フォルダを選択してください。", 0, ssfDesktop)

FOR n = 0 TO Folder.Items.Count - 1
	DIM FolderItem = Folder.Items.Item(n)
	WITH FolderItem
		PRINT "名前<#TAB><#TAB>" + .Name
		PRINT "サイズ<#TAB><#TAB>" + .Size + " Byte"
		PRINT "更新日時<#TAB>" + .ModifyDate
		PRINT "パス<#TAB><#TAB>" + .Path
		PRINT "種類<#TAB><#TAB>" + .Type
	ENDWITH
	PRINT "----------"
NEXT
  1. CREATEOLEOBJ
  2. Shell.BrowseForFolder
  3. Shell.Folder.Items
  4. Shell.FolderItems.Count
  5. Shell.FolderItems.Item
  6. Shell.FolderItem.Name
  7. Shell.FolderItem.Size
  8. Shell.FolderItem.ModifyDate
  9. Shell.FolderItem.Path
  10. Shell.FolderItem.Type