VBA

VBA for Excel



Folder List Tool Ver.2

なんてことだ、こんな簡単にフォルダエクスプローラーが呼び出せたなんて・・。目から鱗とはまさにこのこと。

アプリケーションのメイン部分自体は、前に作成したFolder List Toolを利用しています。

Browse For Folder

こーんなダイアログボックスがあっさり呼び出せます。



必要なコードはこれだけ。

標準モジュール

'--------------------------------------------------
'BrowseForFolderを呼び出し、フォルダのパスを返す
'--------------------------------------------------
Public Function BrowseFolder(Optional myRoot As Variant) As String
    Dim objFolder As Object

    ' フォルダ選択ダイアログを表示
    Set objFolder = CreateObject("Shell.Application") _
            .BrowseForFolder(0, "Select Folder", 1, myRoot)

    ' 選択内容を取得
    If Not (objFolder Is Nothing) Then
        BrowseFolder = objFolder.Items.Item.Path
        Set objFolder = Nothing
    End If
    
End Function

'--------------------------------------------------
'Pathを取得し、メッセージボックスに表示するサンプル
'--------------------------------------------------
Public Sub PrintDir()
    Dim myPath As String
    
    'フォルダパスの取得 -----
    myPath = GetFolderPath(&H11)	'パスの取得
    If myPath <> "" Then MsgBox "Path: [" & myPath & "]"
				'ダイアログボックスへの表示

End Sub

なんでも、これを実行するにはversion 4.71以上のShell32.dllが必要らしいです。 Shell32.dllはWindows\Systemフォルダ(またはwinnt\system32フォルダ)内にあるのでプロパティでバージョンを確認してください。 VBEの参照設定からMicrosoft Shell Controls And Automationが見えてればOKのようです。

BrowseForFolderの使い方は次の通り。

ShellObject.BrowseForFolder Hwnd, Title, Options, [RootFolder]

引数Optionsは次のようなオプションを設定することができます。

[Options]
-[0x0001] コンピュータ、ネットワークの選択不可 + コントロールパネル、ごみ箱、IE非表示
-[0x0004] コメント部分を拡大
-[0x0010] フォルダ名入力ボックス表示
-[0x0040] 「新しいフォルダ」作成ボタン、サイズ変更可
-[0x1000] 全て選択できない?(他のオプションの組み合わせによる)
-[0x4000] 全てのファイルを表示

引数RootFolderは結構使いでのあるやつで、ダイアログボックスのルートパスを指定することができます。 次に示す組み込み定数か、特定パスへのフルパスの文字列(例"C:\User\Temp")を指定します。

[RootFolder]
-[ssfDESKTOP] = 0x0000
-[ssfPROGRAMS] = 0x0002
-[ssfCONTROLS] = 0x0003
-[ssfPRINTERS] = 0x0004
-[ssfPERSONAL] = 0x0005
-[ssfFAVORITES] = 0x0006
-[ssfSTARTUP] = 0x0007
-[ssfRECENT] = 0x0008
-[ssfSENDTO] = 0x0009
-[ssfBITBUCKET] = 0x000a
-[ssfSTARTMENU] = 0x000b
-[ssfDESKTOPDIRECTORY] = 0x0010
-[ssfDRIVES] = 0x0011
-[ssfNETWORK] = 0x0012
-[ssfNETHOOD] = 0x0013
-[ssfFONTS] = 0x0014
-[ssfTEMPLATES] = 0x0015

例えば私のPCで"C:\User\Temp"を指定すると、次のようになります。



これにより、ユーザーに選択させたい作業フォルダの範囲を限定することができるわけです。

[参考]小高 郁, 連載「進め! VBお宝発掘団」第10回「SHDOCVW.DLLの横顔」 ,「Visual Basic Magazine」1999年4月号,翔泳社
Print Folder Tree

指定フォルダ以下の、フォルダ・ファイルのリストをツリー形式で作成します。

プログラムの起動はWorksheet Menu Barの[ツール]-[Folder List Tool]です。

プログラムを起動すると「フォルダの選択」画面が表示されるので、 リストを作成したいフォルダを選択し、[OK]をクリックします。

フォルダの選択後、次のような設定ダイアログが表示されます。 表示対象(フォルダのみ or ファイル(+詳細情報))、 表示形式(リスト形式 or ツリー形式(+ルートから表示))、 出力先(テキストファイル or アクティブシート)を選択し、 [OK]をクリックします。



各オプションを選んだときの出力イメージのサンプルを次に示します。

出力ファイル(リスト形式+詳細を表示)

[C:\User\Temp]
test1.txt    4    2002/11/12 8:45:18
test2.txt    4    2002/11/12 8:45:18
    
    [C:\User\Temp\testfolder1]
    test1-1.txt    4    2002/11/12 8:45:18
    test1-2.txt    4    2002/11/12 8:45:18
    test1-3.txt    4    2002/11/12 8:45:18
        
        [C:\User\Temp\testfolder1\testfolder2]
        test2-1.txt    4    2002/11/12 8:45:18
        test2-2.txt    4    2002/11/12 8:45:18
        test2-3.txt    4    2002/11/12 8:45:18

出力ファイル(ツリー形式)

[-] Temp
 |      test1.txt
 |      test2.txt
 |      
 +-[-] testfolder1
    |      test1-1.txt
    |      test1-2.txt
    |      test1-3.txt
    |      
    +-[-] testfolder2
              test2-1.txt
              test2-2.txt
              test2-3.txt

出力ファイル(ツリー形式+ルートから表示)

[-] C:
 |      

(中略)

 |      
 |-[-] User
 |  |      

(中略)

 |  |      
 |  +-[-] Temp
 |     |      test1.txt
 |     |      test2.txt
 |     |      
 |     +-[-] testfolder1
 |        |      test1-1.txt
 |        |      test1-2.txt
 |        |      test1-3.txt
 |        |      
 |        +-[-] testfolder2
 |                  test2-1.txt
 |                  test2-2.txt
 |                  test2-3.txt
 |      
 +-[+] WINDOWS
Print URL List (IE限定)

IEでは、[Favorite]フォルダに「お気に入り」ファイルが作成されます。 ファイルの中身は、[InternetShortcut]の次の行にURLが記述されています。 本アプリケーションではこれを検索し、ファイル名とURLの一覧表を作成します。



Webページでリンクリストを作成するときなんかに便利だと思います。 秀丸等、エディタによってはURLに自動的にリンクを張ってくれたりするので、 無理矢理簡易WEBランチャーとしても使えます。

使用方法

プログラム本体はAddinですが、パスワードは設定してありません。 メインメニューの[ツール]-[アドイン...]から登録できます。 あるいは、[\Program Files\Microsoft Office\Office\XLStart]に置いておくと、 Excel起動時に自動的に読み込まれます。

注意事項

Office2000,XPの場合は[ツール]-[マクロ]-[セキュリティ]から セキュリティダイアログボックスを呼び出し、セキュリティーレベルを[中]に設定してください。 ファイルを開くときに、マクロを有効にするか問い合わせがあるので [マクロを有効にする]を選択してください。

テキストファイルへの出力の場合、 同じ名前のファイルがあると上書きしてしまいますのでお気をつけください。

アドインおよびそのソースコードに関する著作権はDamfinoにあります。 作者の許可なく配布、掲載、販売を目的に利用することを禁じます。

本プログラムによってどのような障害が出たとしても、 作者は一切の責任を負いません。

Download

クリックしてファイルに保存して下さい。 lzh形式で圧縮してあるので、lhasaなどで解凍してください。
--->FolderList2.lzh

最後に

ご意見、ご要望があればメール・BBSでお知らせ下さい。



Program Top