为什么上传相同文件会导致错误?

时间:2019-01-30 14:25:55

标签: excel vba

我正在做一个需要比较2个文件的工具。但是,每次选择或上传相同文件时都会出错。这是我的代码:

Dim File1 As String, File2 As String
Dim wbCopyF1 As Workbook, wbCopyF2 As Workbook, wbCopyT As Workbook
Dim wsCopyF1 As Worksheet, wsCopyF2 As Worksheet
Dim LR1 As Long, LR2 As Long

Set wbCopyT = Workbooks.Add

File1 = txtBoxOld.Text
File2 = txtBoxNew.Text

'Open the path location of selected file
Set wbCopyF1 = Workbooks.Open(File1)
Set wsCopyF1 = wbCopyF1.Sheets(1)
Set wbCopyF2 = Workbooks.Open(File2)
Set wsCopyF2 = wbCopyF2.Sheets(1)

'Filter the application and copy Range from Previous file
LR1 = wsCopyF1.Range("A" & Rows.count).End(xlUp).row
wsCopyF1.Range("A2:D2").AutoFilter Field:=1, Criteria1:=Me.txtBoxApplication, VisibleDropDown:=True
wsCopyF1.Range("A2:D" & LR1).SpecialCells(xlCellTypeVisible).Copy
wbCopyT.Sheets("Sheet1").Range("A1").PasteSpecial
wbCopyF1.Close SaveChanges:=False

'Filter the application and copy Range from Latest file
LR2 = wsCopyF2.Range("A" & Rows.count).End(xlUp).row
wsCopyF2.Range("A2:D2").AutoFilter Field:=1, Criteria1:=Me.txtBoxApplication, VisibleDropDown:=True
wsCopyF2.Range("A2:D" & LR2).SpecialCells(xlCellTypeVisible).Copy
wbCopyT.Sheets("Sheet2").Range("A1").PasteSpecial
wbCopyF2.Close SaveChanges:=False

我遇到了这样的错误:

enter image description here

而且,该代码中指出的错误:LR1 = wsCopyF1.Range("A" & Rows.count).End(xlUp).row

期望的是,无论我只有1个文件,我都可以使用同一文件而不会出现任何错误。我的代码有问题吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

您不能在Excel中两次打开文件(您甚至不能打开2个名称相同但位于不同文件夹中的不同文件)。如果尝试,Excel将关闭并重新打开该文件

您可以通过修改文件来进行检查(例如,在单元格中写一些东西)-Excel将询问您是否要重新打开文件并丢失修改。但是,如果未修改文件,则Excel将重新打开文件,而无需另行通知。

重新打开文件将使第一个工作簿变量(wbCopyF1)和第一个工作表变量(wsCopyF1)的引用无效。而且,如果您访问这些变量之一,则会出现自动化错误。