特定のフォルダーをスキャンして、最新のタイトルの Excel ファイルを開こうとしています。ファイルの名前は「10 1 13」および「10 2 13」などです。私のサブは最新のファイルを正しく識別します。ただし、それを開こうとすると、次のエラーが表示されます。
'Filename' is currently in use. Try again later.
通常、ファイルは誰かによって使用されますが、変更されるのは 1 日に 1 回だけです。読み取り専用のワークブックを開いて、そこからデータをコピーするだけです。変更や保存は必要ありません。そのため、'ReadOnly:= True' 引数を試しましたが、それでもエラー メッセージが表示されます。
ファイル パス '\Hsrkdfs\hsdata\rk\grp06....' は、全員のネットワーク アクセスが同じようにマッピングされていないネットワークからプルしているためです。G: ドライブからこのフォルダにアクセスする人もいれば、R: ドライブからアクセスする人もいます。このマクロは、すべてのコンピュータから機能する必要があります。デバッグは、「Workbooks.Open Filename:=strFilename, ReadOnly:=True」行を示しています。
ワークブックを開くためのより確実な方法はありますか? 使用に関係なく強制的に開く別の方法はありますか? または、競合を完全に回避する方法はありますか? ありがとうございました。
Sub GetMostRecentFile()
Dim FileSys As FileSystemObject
Dim objFile As File
Dim myFolder
Dim strFilename As String
Dim dteFile As Date
'set path for files - CHANGE FOR YOUR APPROPRIATE FOLDER
Const myDir As String = "\\Hsrkdfs\hsdata\rk\grp06\Rockford Repair Station Quality\DELIVERY\Daily Status report - commercial"
'set up filesys objects
Set FileSys = New FileSystemObject
Set myFolder = FileSys.GetFolder(myDir)
'loop through each file and get date last modified. If largest date then store Filename
dteFile = DateSerial(1900, 1, 1)
For Each objFile In myFolder.Files
If objFile.DateLastModified > dteFile Then
dteFile = objFile.DateLastModified
strFilename = objFile.Path
End If
Next objFile
Workbooks.Open Filename:=strFilename, ReadOnly:=True
Set FileSys = Nothing
Set myFolder = Nothing
End Sub