使用VBA打开.xlsx,文件正在使用错误.只读不起作用



我正在尝试扫描特定文件夹并打开最近标题的Excel文件。这些文件被命名为"10 1 13"和"10 2 13"等。我的子正确识别了最新的文件。但是,当它尝试打开它时,我收到以下错误:

'Filename' is currently in use. Try again later.

该文件通常由某人使用,但每天只修改一次。我需要做的就是打开一个只读工作簿并从中复制数据。不需要修改或保存,这就是为什么我尝试了"ReadOnly:= True"参数,但我仍然收到错误消息。

文件路径 '\Hsrkdfs\hsdata\rk\grp06...'是因为我从每个人的网络访问映射不同的网络中拉取。有些从 G: 驱动器访问此文件夹,有些从 R: 驱动器访问此文件夹,并且此宏必须在所有计算机上正常工作。调试将我指向"工作簿.打开文件名:=str文件名,只读:=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 = "\Hsrkdfshsdatarkgrp06Rockford Repair Station QualityDELIVERYDaily 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

如果您只需要读取文件,请尝试使用 GetObject。像这样:

Dim wb As Workbook
Set wb = GetObject(strFilename)
'Change this line to reflect the ranges you need to copy/paste.
wb.Sheets("Sheet1").Range("A1").Copy ThisWorkbook.Sheets("Sheet1").Range("A1")
wb.Close

使用此功能应该允许您从工作簿中复制,无论它是否由其他用户(包括您(打开。

我注意到,如果工作簿受到保护或您尝试从中复制的工作表受到保护,则此方法不起作用

此外,仅当代码与要粘贴到的工作表位于同一工作簿中时,才使用ThisWorkbook就像我上面所做的那样。

相关内容

最新更新