マクロのファイルは234とは別のファイルにしています。(これは私の好み)
Updatecheck で123と234 の最終更新日(DateLastModified)を比較して更新するかどうかを決めています。
FileSystemObjectを利用しています。(FileSystemObjectについてはVBAの資料よりVBSの資料のほうが詳しいようです。
ほとんどそのまま利用できますのでVBSの資料を参考にしたほうが早く理解できると思います)
このコードをworkbook のコードのPrivate Sub Workbook_Open()から呼びます。
でこのBookをタスクスケジューラーに登録します。(「アクセサリー」「システムツール」にあります。
対象ファイルが複数あるようなのでその辺はシートにファイル名一覧を入れてfor nextを使うなど自分で工夫してね。
Sub Updatecheck()
Dim FSysObj As Object
Dim inppath As String
Dim outpath As String
Dim inpfile As Object
Dim outfile As Object
inppath = "D:\ddd\123.xls"
outpath = "D:\ddd\234.xls"
Set FSysObj = CreateObject("Scripting.FileSystemObject")
Set inpfile = FSysObj.GetFile(inppath)
Set outfile = FSysObj.GetFile(outpath)
If inpfile.DateLastModified < outfile.DateLastModified Then
DOupdate_proc
End If
Application.DisplayAlerts = False
Application.Quit
End Sub
Sub DOupdate_proc()
Dim inppath As String
Dim outpath As String
inppath = "D:\ddd\123.xls"
outpath = "D:\ddd\234.xls"
Workbooks.Open inppath
Workbooks.Open outpath
更新処理
End Sub
補足
度々すいません。 別のファイルを"サンプル"として VBAの This Workbookに Private Sub Workbook_Open() Application.Run "サンプル.xls!Updatecheck" Application.Run "サンプル.xls!DOupdate_proc" End Sub とし、標準モジュールに Sub Updatecheck() Dim FSysObj As Object Dim inppath As String Dim outpath As String Dim inpfile As Object Dim outfile As Object inppath = "D:\ddd\123.xls" outpath = "D:\ddd\234.xls" Set FSysObj = CreateObject("Scripting.FileSystemObject") Set inpfile = FSysObj.GetFile(inppath) Set outfile = FSysObj.GetFile(outpath) If inpfile.DateLastModified < outfile.DateLastModified Then DOupdate_proc End If Application.DisplayAlerts = False Application.Quit End Sub Sub DOupdate_proc() Dim inppath As String Dim outpath As String inppath = "D:\ddd\123.xls" outpath = "D:\ddd\234.xls" Workbooks.Open inppath Workbooks.Open outpath Application.Run "サンプル.xls!ここに実行したいマクロ名" End Sub とし、ワークブックを開くと、マクロ"Updatecheck"と"DOupdate_proc" が実行される様にしたのですが、これではうまくいきませんでした。 私の理解が間違っていた様です。 又、本題とそれてしまいますが、アクセスで同じ様な事(決まった時間に、エクセルのファイルからデータをインポートし、現在あるテーブルの最後のレコードの下に追加をする)はできませんか?教えて頂だけると非常に助かります。 よろしくお願いします。