2015年4月26日日曜日

Excel VBAでファイルを開くときに実行しておいたほうがいいマクロ

VBAでファイルを開くときに必ず行う確認処理
Excel VBAを使ったマクロを作る中で、別のExcelファイル(ブック)を開く処理はしばしば登場します。例えば「同じフォーマットで作られたファイルから、特定のデータを取り出して集計する」というような処理です。

マクロでファイルを開く処理を行う前に、私は必ず下記の2つの確認を行うことにしています。


  1. 開こうとしているファイルは存在するか
  2. すでに同名のファイルを開いているか

存在しないファイルを開こうとすれば、当然エラーとなってしまいます。また、現在開いているファイルと同じ名前のファイルは同時に開くことはできません。エラーを回避するために事前に確認を行い、処理を中断したりスキップしたりできるようにしています。

「開こうとしているファイルは存在するか」確認サンプルコード
Private Sub file_chk(filepath As String)
Dim filename As String
filename = dir(filepath)
If filename  = "" Then
       MsgBox "ファイルが存在しません"
End If
End Sub

Dir関数を使うことでfilepathが存在するか否か確認することができます。存在する場合はfilenameにファイル名、存在しない場合には空白が代入されます。

「すでに同名のファイルを開いているか」確認処理サンプルコード
Private Sub file_open_chk(filename)
Dim wbchk As Workbook
For Each wbchk In Workbooks
   If wbchk.Name = filename Then
     msgbox filename & "を開いています"
   End If
Next wbchk

現在開いているブックの中に、指定のファイルと同じものがあるかFor Eachを使って確認するマクロです。同名ファイルを開いているときには、メッセージを表示して処理を中断するという処理を挟むようなことができます。

この記事はお役に立てたでしょうか?
もし参考になると思っていただけたら、こちらのボタンから共有をお願いします。

このエントリーをはてなブックマークに追加