VBA - 工作簿()时下标超出范围.关闭



我想遍历文件夹中的所有 excel 工作簿,并在每个工作簿的每个工作表的单元格 A1 中写入字符串"Test"。 以下代码导致"下标超出范围(错误 9("。 当我逐行运行代码时,结果发现错误是由 行:
存储在
FName中的Workbooks(FName).Close Savechanges:=TrueDir("C...")仅返回文件名,因此错误不会是因为将完整路径名提供给Workboooks(...).Close这似乎是错误的原因。
最重要的是,此代码真正打开工作簿,而不仅仅是写入其中。我不要 以可视方式打开。

Sub multWB()
Dim FName As String
Dim wb As Workbook
Dim sht As Worksheet
Dim directory As String
directory = "C:Users...DesktopmultipleWorkbooks"
FName = Dir("C:Users...DesktopmultipleWorkbooks*.xls*")
Do While FName <> ""

Set wb = Workbooks.Open(directory & FName)
For Each sht In wb.Worksheets
sht.Cells(1, 1) = "Test"
Next
FName = Dir
Workbooks(FName).Close Savechanges:=True 'causes error

Loop
Set wb = Nothing
End Sub

您已经有对工作簿的引用,其中包含wb.只需使用该参考!

wb.Close SaveChanges:=True

其他任何东西都是无缘无故地取消引用对象。

在关闭当前打开的工作簿之前,您正在检索下一个工作簿的名称。切换这两行代码的顺序:

Workbooks(FName).Close Savechanges:=True 
FName = Dir()

这:FName = Dir缺少文件夹名称。将其更改为:

FName = directory & Dir()

最新更新