这个工作簿在Excel 2018中不起作用吗?

时间:2018-08-23 19:24:27

标签: excel excel-vba

我最近遇到了一个问题,在该宏中,以前在Excel的早期版本中工作的宏已按预期停止运行。该宏在起作用时会打开特定文件夹中的每个文件,并复制其一些数据,然后将其粘贴到它打开的另一个文件中。

由于此宏是从文件夹中的文件中运行的,因此以前使用以下代码对其进行了编程,使其不尝试重新打开该文件:

' Create a new workbook and set a variable to the first sheet.
  '  Set SummarySheet =
    Workbooks.Open ("[Redacted]")
   '     agg_wkb_name = ActiveWorkbook
        lrowcount = ActiveWorkbook.Worksheets("scheduled hours").UsedRange.Rows.Count
        ActiveWorkbook.Worksheets("scheduled hours").Range("A2:bz" & lrowcount).Delete
    ' Modify this folder path to point to the files you want to use.
    FolderPath = "[Redacted]"

    ' NRow keeps track of where to insert new rows in the destination workbook.
    NRow = 2

    ' Call Dir the first time, pointing it to all Excel files in the folder path.
    FileName = Dir(FolderPath & "*.xl*")

    ' Loop until Dir returns an empty string.
    Do While FileName <> ""
        ' Open a workbook in the folder
        If FolderPath & FileName = ThisWorkbook.FullName Then
        Set WorkBk = ThisWorkbook
        Else
        Set WorkBk = Workbooks.Open(FolderPath & FileName, , True)
        End If

但是,在我们的计算机和程序更新到Win10和Excel 2016之后,此宏开始尝试也打开运行该文件的工作簿(“ ThisWorkbook”)。当您尝试说“不,我不想重新打开文件”时,它将停止宏,当您说“是”时,Excel崩溃。

我试图分离代码,以不同的方式从“ ThisWorkbook”中提取数据,而不是从文件夹中的其他工作簿中提取数据。新的代码部分为:

Do While FileName <> ""
        If Not (FolderPath & FileName = ThisWorkbook.Path & ThisWorkbook.Name) Then
        Set WorkBk = Workbooks.Open(FolderPath & FileName, , True)
        End If

不幸的是,仍然会发生同样的错误。我不知所措-我的最佳猜测是,在最新版本的Excel和当前版本的Excel之间,“ ThisWorkbook”的运行方式有所变化。

1 个答案:

答案 0 :(得分:0)

因此,事实证明,系统管理员已将文件夹重新映射到计算机上的驱动器。我修复了此问题,方法是不让代码查看文件位置进行比较,而只查看名称,因为一旦进入文件夹,这一切都会发生变化。

如果有人遇到过这种情况,或者遇到类似的情况,即正在打开一个文件夹中除当前打开的文件之外的所有文件,请不要理会文件路径。只需使用名称即可。