【发布时间】:2017-08-18 11:12:08
【问题描述】:
我有一个 Access DB 可以打开、编辑和保存一个 Excel 文档,该文档在第一次运行时运行良好,但如果我尝试更改多个文件(或同一文件两次),则会失败并显示“运行时错误” 1004': 对象 '_Global' 的方法 'Cells' 失败"
如果我关闭数据库然后重新打开它,它再次适用于第一个更改的文件。
虽然我对 VBA 并不陌生,但我会说我是新手。这是我正在使用的代码片段:
Code:
'Open spreadsheet and make it visible
Set xl = CreateObject("Excel.Application")
strInputFile = varItem
xl.Workbooks.Open strInputFile
xl.Visible = True
'Trying to get row count here but not working yet
'Set myRange = xl.Sheets("Sheet1").Range("C:C")
'lRowCount = Excel.Application.WorksheetFunction.CountA("Sheet1").Range("C:C")
'lRowCount = xl.WorksheetFunction.CountA(Worksheets("Sheet1").Cells(C, C))
'Debug.Print lRowCount
'strMyRange = "C:C"
'lRowCount = xl.WorksheetFunction.CountA(strMyRange)
'Debug.Print lRowCount
'lRowCount = Excel.Application.WorksheetFunction.CountA(Workbooks(strInputFile).Sheets("Sheet1").Range("C:C"))
'Debug.Print lRowCount
'Make the changes
j = 0
If Left(strFile, 4) = "xxxx" Then
myPath = "\\a\path\for\xxxx"
If InStr(1, strFile, "IQ") Then
For i = 1 To 500 'Row count not working yet
If InStr(1, Cells(i, "C").Value, myVariable) > 0 Then
Cells(i, "B") = "New Value"
j = j + 1
End If
Next
End If
End If
'Clean up
xl.Quit
Set xl = Nothing
Set objInputFile = Nothing
【问题讨论】:
-
在哪一行执行失败?
-
如果 InStr(1, Cells(i, "C").Value, myVariable) > 0 那么
-
坦率地说,我根本不知道它为什么会起作用。看起来此代码是从 Excel 复制的。在 Access 中,像 Cell 这样的直接调用不应该工作。使用
xl.Sheets("Sheet1").Cells(i, "C")之类的变量 -
谢谢谢尔盖。我会尝试你的建议,并在我的会议结束后发布结果。
-
不要忘记下面行中的第二个
Cells,也不要忘记使用Workbook对象上的.Save方法保存文件。