我对运行 VBA 脚本的 Access DB 有一个奇怪的问题,它调用 Excel 文档以在将其用作链接表之前运行一些修复程序。
奇怪的是它在第一次从新打开的 Access 运行脚本时完美运行。第二次我收到错误'运行时错误'9',下标超出范围'脚本失败:
Workbooks("Overview Tracker.xlsb").Activate
在 IF THEN Sub 中, testProcessed() (我只放入该行以查看首先激活 Workbook 是否有帮助,但它没有 - 要么它在该行失败,要么在下一个是 IF 行。)
脚本按此顺序运行。1. 打开 excel 文档 2. 测试是否已经处理(检查单元格内容) 3. 如果处理了则弹出消息并退出 Excel 文档 4. 如果没有则运行处理然后退出 Excel 文档
正如我所说,新打开的 Access 将完美地运行此脚本,在任何一种情况下(已经处理或未处理),但脚本的第二次运行总是会崩溃。
我整天都在努力解决这个问题,没有运气!
欢迎任何想法!提前感谢您的帮助。
Public Function OpenExcelFixer1()
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
xlApp.Visible = True
xlApp.DisplayAlerts = False
xlApp.Workbooks.Open "C:\Users\....\Overview tracker.xlsb", UpdateLinks:= _
3
Call testProcessed
xlApp.Quit
End Function
Public Sub alreadyDone()
MsgBox "This file has already been processed", vbExclamation, "Overview Tracker already fixed"
Excel.Application.Quit
End Sub
Public Sub fixProcess()
ActiveWorkbook.Save
Sheets("OVERVIEW").Select
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Columns("A:I").Select
Selection.NumberFormat = "@"
Columns("Q:X").Select
Selection.NumberFormat = "[$-F800]dddd, mmmm dd, yyyy"
Sheets("SHIPPING").Select
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Columns("A:I").Select
Selection.NumberFormat = "@"
Columns("Q:X").Select
Selection.NumberFormat = "[$-F800]dddd, mmmm dd, yyyy"
Sheets("Dell Update").Select
Range("G1").Select
ActiveCell.FormulaR1C1 = "PROCESSED"
ActiveWorkbook.Save
ActiveWorkbook.Close
Excel.Application.Quit
End Sub
Public Sub testProcessed()
Workbooks("Overview Tracker.xlsb").Activate
If Workbooks("Overview Tracker.xlsb").Sheets("Update").Range("G1").Value = "PROCESSED" Then
Call alreadyDone
Else
Call fixProcess
End If
End Sub