【发布时间】:2017-08-18 04:17:51
【问题描述】:
我想遍历文件夹中的所有 excel 工作簿,并在每个工作簿的每个工作表的单元格 A1 中写入字符串“Test”。
以下代码导致“下标超出范围(错误 9)”。
当我逐行运行代码时,结果发现错误是由
行: Workbooks(FName).Close Savechanges:=True Dir("C\...") 存储在 FName 中仅返回文件名,因此错误不可能是因为将完整路径名提供给 Workboooks(...).Close 这似乎通常是错误。
最重要的是这段代码真正打开了工作簿,而不是只是写入它。我不想要它
以可视方式打开。
Sub multWB()
Dim FName As String
Dim wb As Workbook
Dim sht As Worksheet
Dim directory As String
directory = "C:\Users\...\Desktop\multipleWorkbooks\"
FName = Dir("C:\Users\...\Desktop\multipleWorkbooks\*.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
【问题讨论】:
-
试试
Workbooks(FName).Close True -
@dwirony 我试过了,但错误仍然存在