MENU

ファイルを既定のアプリで開く方法

プログラムで出力したHTMLファイルをプレビューしたり、出力したテキストファイルをテキストエディタで開いたりするために、ファイルを既定のアプリ、つまり拡張子に紐付けられたアプリで開きたいことがあります。
ここではその方法について説明します。

目次

良く使われる方法

「url.dll」を使う方法

id = Shell("rundll32.exe url.dll,FileProtocolHandler " & strFileName, vbNormalFocus)

返値はハンドルIDです。

この方法では下記のようなメリットがあります。

  • ファイルが存在しなくてもエラーとならない
  • ファイル名に半角スペースが含まれていてもエラーとならずに正常に開く(引用符不要だが囲んでも問題ない)

特にデメリットも見当たらないため一番おススメ出来る方法です。

「WScript.Shell」を使う方法

ret = WSH.Run(Chr(34) & strFileName & Chr(34), 3)

返値はエラーコード(正常の場合は0)です。

この方法では下記のようなデメリットがあります。

  1. ファイルが存在しない場合はエラーとなる
  2. ファイル名に半角スペースが含まれるとエラーとなる(二重引用符で囲むことで回避可能)

上記のようなデメリットがあるため、積極的に使う必要はないように思われます。

その他の方法

使用頻度は低いと思われますが、参考までに他の方法を記載しておきます。

batファイル経由で開く(Shell関数でbatファイルを開く)

ShellオブジェクトのShellExecuteメソッドを使う

Dim sh As Object
Set sh = CreateObject("Shell.Application")
sh.ShellExecute strFile
「Microsoft Shell Controls And Automation」を参照設定しているなら下記のように書けます。
Dim sh As New Shell32.Shell
sh.ShellExecute strFile

WorkBookオブジェクトのFollowHyperlinkメソッドを使う(Excel限定)

ThisWorkbook.FollowHyperlink strFileName

フォルダをエクスプローラーで開く方法

今回ご紹介した、「url.dll」を使う方法、「WScript.Shell」を使う方法で、ファイルではなくフォルダを引数に渡すと、エクスプローラーでフォルダが開きます。

まとめ

今回紹介した方法の中では、『「url.dll」を使う方法』が一番使い勝手が良さそうです。

よかったらシェアしてね!

この記事を書いた人

コメント

コメントする

目次
閉じる