我已经解决这个问题好几天了。我尝试了多种不同的方式。我试图将多个文件附加到Access链接表甚至临时表中,甚至附加到单个excel文件中。第一次尝试时,每次“单次启动”时,程序都会完美运行,然后停止运行一段时间,然后再次开始运行。当它停止运行时,出现下标超出范围的运行时错误9.我打开了正确的excel文件,但由于某种原因,它不允许我对其进行设置...如何打开文件,但在下一行可以'找到它吗???它使我发疯,它起作用了,它停止工作了,然后又起作用了...任何建议或提示将不胜感激。
这只是我尝试执行此操作的一种方法,但是它们都以相同的方式结束。
i = 2 'i is created through another loop previously.
j = 0
With MyXL
.Visible = True
.DisplayAlerts = True
End With
Do
Set MyXL = CreateObject("Excel.Application")
MyXL.Workbooks.Open Directory & fileArray(j), Notify:=False, ReadOnly:=False 'Tried True previously but changed since i was making changes to the file.
Set wb = Workbooks(fileArray(j)) 'DING DING DING!!! WHY??? You WORKED before!!!
If wb.Sheets("Sheet1").Range("A1") = "System Status" Then
wb.Sheets("Sheet1").Range("A1") = "PO System Status"
wb.Save
End If
wb.Close True
Set wb = Nothing
MyXL.Quit
Set MyXL = Nothing
Set wb = Nothing
j = j + 1
Loop Until j = i
以前,我认为我没有正确关闭工作簿,但是我已经关闭了MyXL和以前的wb,但是仍然遇到错误。我想知道这是否是Access / vba不能连续做的事情。我将ReadOnly更改为true,但仍然以相同的方式结束。
答案 0 :(得分:0)
将工作簿设置为Open
方法的返回值:
Set wb = MyXL.Workbooks.Open(Directory & fileArray(j), Notify:=False, ReadOnly:=False)
If wb.Sheets("Sheet1").Range("A1") = "System Status" Then
wb.Sheets("Sheet1").Range("A1") = "PO System Status"
wb.Save
End If
您不需要/不应该为每个文件创建一个新的Excel应用程序实例-在进入循环之前进行设置,并在完成文件更新后将其关闭。检查任务管理器,确保没有很多Excel实例挂起。