Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » 指定日以降に更新されたExcelファイルを開くマクロ

指定日以降に更新されたExcelファイルを開くマクロ

対象:Excel2007, Excel2010, Excel2013

特定のフォルダ内の、指定された日以降に更新されたExcelファイル・ブックだけを開きたい、といったニーズが実務で出ることがあります。

そんなExcelマクロを作ってみました。

FileSystemObjectを利用しない、Dir関数を使ったマクロです。

[スポンサードリンク]

指定日以降に更新されたブックを開くサンプルマクロ

以下のマクロを実行すると、特定のフォルダ内の、指定された日付以降に更新されたExcelが開かれます。

指定された日付以降に更新されたファイルが存在しない場合は、
「○○以降に以降に更新されたExcelファイルはありません。」
というメッセージが表示されます。

Sub 指定日以降に更新されたExcelファイルを開く()
 ' ファイルのあるフォルダと日付
 Const DIR_PATH = "C:\TEST"
 Const DATE_REF = #3/31/2013#

 Dim file_name As String
 Dim file_path As String
 Dim cnt As Long
 Dim msg As String

 file_name = Dir(DIR_PATH & "\*.xls*")
 If file_name = "" Then
  msg = "指定されたフォルダにExcelファイルがありません。"
  MsgBox msg
  Exit Sub
 End If

 cnt = 0
 Do Until file_name = ""
  file_path = DIR_PATH & "\" & file_name
  If FileDateTime(file_path) >= DATE_REF Then
   Workbooks.Open file_path
   cnt = cnt + 1
  End If
  file_name = Dir
 Loop

 If cnt = 0 Then
  msg = DATE_REF _
      & "以降に更新されたExcelファイルはありません。"
 Else
  msg = cnt _
      & "個のExcelファイルを開きました。"
 End If
 MsgBox msg
End Sub

フォルダと更新日は、定数で指定するようにしています。
 Const DIR_PATH = "C:\TEST"
 Const DATE_REF = #3/31/2013#

サンプルマクロの解説

Dir関数を使って、定数・DIR_PATHで指定されたフォルダ内で拡張子に「.xls」の含まれるファイルの、ファイル名を変数・file_nameに格納します。
 file_name = Dir(DIR_PATH & "\*.xls*")

Dirは、該当するファイルが存在しないときに空白の文字列を返すので、ファイルが存在しないときにはメッセ-ジを表示して、マクロを終了します。
 If file_name = "" Then
  msg = "指定されたフォルダにExcelファイルがありません。"
  MsgBox msg
  Exit Sub
 End If

Dir関数は、引数を指定せずに呼ばれると、同じフォルダの次のファイル名を返してきます。ですから、空白文字列が返されるまで(該当するファイル名をすべて取得するまで)ループを回して、
 Do Until file_name = ""

見つかったファイルの更新日時をFileDateTime関数で取得して、定数・DATE_REFで指定された日よりも新しければ、
  If FileDateTime(file_path) >= DATE_REF Then

そのExcelファイルを開き、
   Workbooks.Open file_path

引数を指定せずにDir関数を呼んで、次のファイルを探します。
  file_name = Dir
 Loop

ループ処理の中でファイルをいくつ開いたかをカウントして、「0」だったときは該当するファイルが存在しないので、
 If cnt = 0 Then

「○○以降に更新されたExcelファイルはありません。」というメッセージが表示されるように変数・msgに文字列を格納し、
  msg = DATE_REF _
      & "以降に更新されたExcelファイルはありません。"

該当するファイルが存在したときは「○個のExcelファイルを開きました。」という文字列を変数・msgに格納し、
 Else
  msg = cnt _
      & "個のExcelファイルを開きました。"

最後にそのメッセージを表示しています。
 MsgBox msg

関連語句
VBA, Visual Basic for Applications

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » 指定日以降に更新されたExcelファイルを開くマクロ

「Workbooks・Workbook」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.