構文
Shell (pathname, [windowstyle])
pathname・・・・・Explorerを指定します。C:\Windows\Explorer.exe
windowstyle・・・・開きたいフォルダをフルパスで指定します。
windowstyle・・・・開きたいフォルダをフルパスで指定します。
マクロで指定したフォルダを開きます。Shell関数を利用します。
Shell関数は他のプログラムを起動したりする事が出来る関数です。
今回はフォルダのみ(エクスプローラーのみ)開きます。
windowstyleの定数
定数 | 画面サイズ | 最前面表示 |
vbHide | 表示しない | 表示しない |
vbNormalFocus | 通常サイズで表示 | 最前面に表示 |
vbMinimizedFocus | 最小サイズで表示 | 最前面に表示 |
vbMaximizedFocus | 最大サイズで表示 | 最前面に表示 |
vbNormalNoFocus | 通常サイズで表示 | 最前面に表示しない |
vbMinimizedNoFocus | 最小サイズで表示 | 最前面に表示しない |
指定したフォルダを開くサンプルコード
Public Sub sample() '■通常サイズで表示 Shell "C:\Windows\Explorer.exe " & "C:\vba", vbNormalFocus '■最大サイズで表示 Shell "C:\Windows\Explorer.exe " & "C:\vba", vbMaximizedFocus '■フォルダ存在しなければ、マイドキュメントが起動します Shell "C:\Windows\Explorer.exe " & "C:\sample" '■フォルダ存在しない場合のエラー回避 Dim sPath As String sPath = "C:\vba" If Dir(sPath, vbDirectory) & <> "" Then Shell "C:\Windows\Explorer.exe" & sPath, vbNormalFocus Else Debug.Print sPath & "が存在しません" End If End Sub
注意点
- サブフォルダも含めて表示するわけではありません。その場合、FileSystemObjectを使用します。
- “C:\Windows\Explorer.exe “の最後の半角スペースは必須です。
半角スペースをなくすと実行時エラー ’53’:ファイルが見つかりません。 - ネットワークフォルダを開くことも可能です。
- Shell関数を使わずフォルダを開くことも可能です。
- ファイルダイアログを表示し、ユーザーに選択してもらう場合は下記。
単一ファイル/複数ファイル/フォルダ
コメント