VBA|ファイルがエクセルファイルかどうか判別する

エクセルVBA VBAでフォルダ・ファイルの操作



Workbook.Openを使ってエラーになることはありませんか?

今回はWorkbook.Openについて解説していきますね。



Workbook.Openは、Excelファイル以外ではエラーになる

エクセルファイルを自動的に開くマクロを作ったときに厄介なのが「エクセルファイル以外のファイルがある」場合です。

エクセルファイル自体は「Workbooks.Open(ワークブック名)」を使えばなんてことないものです。

ですが、 「Workbooks.Open(ワークブック名)」 で開くのはエクセルファイルだけです。

もしエクセルファイル以外のファイルに対して 「Workbooks.Open(ワークブック名)」をすると、エラーが表示されてしまいます。

エラーにならないために、対象のファイルをエクセルファイルが判別できるVBAを紹介します。

Likeとワイルドカードを使ってファイルを判別する

Sub エクセルファイルか判別する()
    Dim ファイル As file
    Dim wb_book As Workbook
     
    'ファイル名に「.xls」が入っているか確認する
    If ファイル.Name Like "*.xls*" Then
        Set wb_book = Workbooks.Open(ファイル)  'エクセルファイルだったら開く
    End If
End Sub

該当ファイルの「ファイル名」について、Like演算子とワイルドカードを使ってエクセルファイルかどうかを判別するVBAです。

もし該当ファイルがエクセルファイルであるならば、ファイルをオープンします。

「ファイル.Name Like “*.xls*” 」で、ファイル名に 「.xls」が含まれているか判別しています。

「*(アスタリスク)」は、ワイルドカードで、「任意の数の文字」を意味し、「*」に該当する部分は何文字になっていても、「*」ひとつでまかなえます。

なお、拡張子にあたる部分にもわざわざ「*」を入れている理由は、エクセルファイルは「.xls」のほかに、 「.xlsx」、「.xlsm」などの種類があるため、それを補う意味で「.xls」の後ろに「*」を入れています。

ファイルがエクセルファイルか判別するためのVBAを紹介しているサイトがなかなか無いので、ぜひ役立てていただければと思います。

コメント

タイトルとURLをコピーしました