VBAで完結します。フリーソフト等は使いません。
以前紹介した「複数のフォルダを開く(バッチ編)」では開くフォルダの位置調整ができませんでしたが、この方法では開いた後に自動で等間隔でずらして表示されます。
同時に複数のフォルダを開きっぱなしにしたい人向けです。
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_12-2-1024x669.png)
例えば以下のフォルダを開きたい。
C:\○○試験第3相\00.DOCS C:\○○試験第3相\10.Protocol C:\○○試験第3相\20.aCRF C:\○○試験第3相\30.RawData C:\○○試験第3相\40.SDTM\41.SPEC C:\○○試験第3相\40.SDTM\42.Main C:\○○試験第3相\40.SDTM\42.Main\421.SRC C:\○○試験第3相\40.SDTM\42.Main\422.Macro C:\○○試験第3相\40.SDTM\42.Main\423.SDTM C:\○○試験第3相\40.SDTM\43.Sub\433.SDTM C:\○○試験第3相\40.SDTM\44.Define C:\○○試験第3相\40.SDTM\45.P21 C:\○○試験第3相\40.SDTM\46.SDRG C:\○○試験第3相\50.ADaM\51.SPEC C:\○○試験第3相\50.ADaM\52.Main\521.SRC C:\○○試験第3相\50.ADaM\52.Main\522.Macro C:\○○試験第3相\50.ADaM\52.Main\523.ADaM C:\○○試験第3相\50.ADaM\53.Sub\533.ADaM C:\○○試験第3相\50.ADaM\54.Define C:\○○試験第3相\50.ADaM\55.P21 C:\○○試験第3相\50.ADaM\56.ADRG C:\○○試験第3相\60.TLF\61.SAP C:\○○試験第3相\60.TLF\62.Main\621.SRC C:\○○試験第3相\60.TLF\62.Main\622.Macro C:\○○試験第3相\60.TLF\62.Main\623.TLF C:\○○試験第3相\60.TLF\63.Sub\631.TLF
26個あります。上記は極端な例ですが、多くのフォルダを開き、位置を調整し、窓の大きさも調整するとかなり時間がかかります(5分くらい?)し、精神的にもまいります。
複数の試験にアサインされているときなどは、複数の試験のフォルダやファイルを同時に開いてしまうとファイルが混ざる危険性があるために、同時に開くフォルダやファイルは極力1試験分にしたい。
以下で紹介するExcelマクロを塊ごと(アサインされている試験ごととか)で作成しておくだけで一瞬(1分以内くらい)で開けます。
準備
Excelの「開発」メニューを表示する。
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_01.png)
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_02-1024x731.png)
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_03.png)
VBAを起動するボタンを作る
任意のフォルダに空のExcelファイルを作成します。
ファイルを開き、ボタンを設置します。
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_04.png)
上記でボタンを設置すると、下のダイアログが開くので適当にマクロ名を決めて「新規作成」を押す。
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_05.png)
上記で「新規作成」ボタンを押すと、下のようなVBAエディタが立ち上がる。
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_06.png)
標準モジュール内のコードであることを確認。
もしも標準モジュールがなかった場合は以下の要領で追加できます。
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_07.png)
Private Sub OpenFolders() Dim objW As Object Dim i, j As Integer i = 0 j = 0 Path01 = "C:\○○試験第3相\00.DOCS" Path02 = "C:\○○試験第3相\10.Protocol" Path03 = "C:\○○試験第3相\20.aCRF" Path04 = "C:\○○試験第3相\30.RawData" Path05 = "C:\○○試験第3相\40.SDTM\41.SPEC" Path06 = "C:\○○試験第3相\40.SDTM\42.Main" Path07 = "C:\○○試験第3相\40.SDTM\42.Main\421.SRC" Path08 = "C:\○○試験第3相\40.SDTM\42.Main\422.Macro" Path09 = "C:\○○試験第3相\40.SDTM\42.Main\423.SDTM" Path10 = "C:\○○試験第3相\40.SDTM\43.Sub\433.SDTM" Path11 = "C:\○○試験第3相\40.SDTM\44.Define" Path12 = "C:\○○試験第3相\40.SDTM\45.P21" Path13 = "C:\○○試験第3相\40.SDTM\46.SDRG" Path14 = "C:\○○試験第3相\50.ADaM\51.SPEC" Path15 = "C:\○○試験第3相\50.ADaM\52.Main\521.SRC" Path16 = "C:\○○試験第3相\50.ADaM\52.Main\522.Macro" Path17 = "C:\○○試験第3相\50.ADaM\52.Main\523.ADaM" Path18 = "C:\○○試験第3相\50.ADaM\53.Sub\533.ADaM" Path19 = "C:\○○試験第3相\50.ADaM\54.Define" Path20 = "C:\○○試験第3相\50.ADaM\55.P21" Path21 = "C:\○○試験第3相\50.ADaM\56.ADRG" Path22 = "C:\○○試験第3相\60.TLF\61.SAP" Path23 = "C:\○○試験第3相\60.TLF\62.Main\621.SRC" Path24 = "C:\○○試験第3相\60.TLF\62.Main\622.Macro" Path25 = "C:\○○試験第3相\60.TLF\62.Main\623.TLF" Path26 = "C:\○○試験第3相\60.TLF\63.Sub\631.TLF" With CreateObject("Shell.Application") .Open Path01 Application.Wait Now() + TimeValue("0:00:01") .Open Path02 Application.Wait Now() + TimeValue("0:00:01") .Open Path03 Application.Wait Now() + TimeValue("0:00:01") .Open Path04 Application.Wait Now() + TimeValue("0:00:01") .Open Path05 Application.Wait Now() + TimeValue("0:00:01") .Open Path06 Application.Wait Now() + TimeValue("0:00:01") .Open Path07 Application.Wait Now() + TimeValue("0:00:01") .Open Path08 Application.Wait Now() + TimeValue("0:00:01") .Open Path09 Application.Wait Now() + TimeValue("0:00:01") .Open Path10 Application.Wait Now() + TimeValue("0:00:01") .Open Path11 Application.Wait Now() + TimeValue("0:00:01") .Open Path12 Application.Wait Now() + TimeValue("0:00:01") .Open Path13 Application.Wait Now() + TimeValue("0:00:01") .Open Path14 Application.Wait Now() + TimeValue("0:00:01") .Open Path15 Application.Wait Now() + TimeValue("0:00:01") .Open Path16 Application.Wait Now() + TimeValue("0:00:01") .Open Path17 Application.Wait Now() + TimeValue("0:00:01") .Open Path18 Application.Wait Now() + TimeValue("0:00:01") .Open Path19 Application.Wait Now() + TimeValue("0:00:01") .Open Path20 Application.Wait Now() + TimeValue("0:00:01") .Open Path21 Application.Wait Now() + TimeValue("0:00:01") .Open Path22 Application.Wait Now() + TimeValue("0:00:01") .Open Path23 Application.Wait Now() + TimeValue("0:00:01") .Open Path24 Application.Wait Now() + TimeValue("0:00:01") .Open Path25 Application.Wait Now() + TimeValue("0:00:01") .Open Path26 Application.Wait Now() + TimeValue("0:00:02") For Each objW In .Windows If InStr(TypeName(objW.Document), "ShellFolder") > 1 Then objW.Left = 400 + i objW.Top = 0 + j objW.Height = 300 objW.Width = 850 i = i + 30 j = j + 30 End If Next End With End Sub Sub ボタン1_Click() Module1.OpenFolders End Sub
かなり冗長なコードですが、動きます。
VBAが本職ではないのでこれでよいです。
Path01 = "C:\○○試験第3相\00.DOCS"
この部分に開きたいフォルダを絶対パスで記述します。
複数のパスのときは変数名を連番にします。
Path01,Path02,・・・,PathXX
With CreateObject("Shell.Application") .Open Path01 Application.Wait Now() + TimeValue("0:00:01") ・ ・ ・
.Open Path01
で指定されたフォルダを開いています。
Application.Wait Now() + TimeValue(“0:00:01”)
で指定された時間だけWaitを入れます。
これがないとPC環境によっては実行洩れが発生します。
開きたいフォルダの数だけ書きます。
ループにすべきですが、わからなかったのでこのままにしています。
For Each objW In .Windows If InStr(TypeName(objW.Document), "ShellFolder") > 1 Then objW.Left = 400 + i objW.Top = 0 + j objW.Height = 300 objW.Width = 850 i = i + 30 j = j + 30 End If Next
開いたすべてのフォルダに対して開いた順に位置と大きさを調整しています。モニタの大きさによって最適値は異なるので、座標と大きさは試しながら調整してください。
※すべてのフォルダが対象となるので、このマクロ以外で開かれていたフォルダも調整されてしまうので注意。
Sub ボタン1_Click() Module1.OpenFolders End Sub
ワークシートに設置したボタンが押されると、このコードが呼ばれます。
内部でOpenFoldersが呼ばれることで本体に処理が移ります。
保存する際はマクロ有効(.xlsm)として保存します。
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_08.png)
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_09.png)
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_10.png)
最初に作成したxlsxファイルは不要なので削除します。
もっとよい作成方法があると思いますが、動けばよいのでこれでよしとします。
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_11-1.png)
ファイルを開くとセキュリティの警告がでるので「コンテンツの有効化」を押します。
作成したボタンを押すことでマクロが実行されます。
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_12-1-1024x669.png)
登録したフォルダが開かれ、位置と大きさも自動調整されました。
![](https://ymddttm.com/wp-content/uploads/2019/10/2019-10-04_14.png)
もちろんフォルダを選択する場合は画面上の該当部分のクリックだけでなく、タスクバー上からでも可能です。
コメント