首次运行会​​使下标超出范围错误

时间:2016-11-22 15:40:55

标签: excel excel-vba ms-access access-vba vba

当我在MS Access中运行以下代码时,我在第一次运行时得到一个超出范围错误的下标。如果我在错误上单击确定并再次运行就可以了。如果我关闭数据库并重新打开它,我会在第一次运行时再次收到错误。

DoCmd.OutputTo acOutputTable, "tblOutput", acFormatXLS, "Output.xls", True
Excel.Workbooks("Output.xls").Worksheets("tblOutput").Rows("1:3").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'or xlFormatFromRightOrBelow
Excel.Workbooks("Output.xls").Worksheets("tblOutput").Range("B2") = "data 1"
Excel.Workbooks("Output.xls").Worksheets("tblOutput").Range("D2") = "data 2"
Excel.Workbooks("Output.xls").Worksheets("tblOutput").Range("E2") = "date 3"
Excel.Workbooks("Output.xls").Worksheets("tblOutput").Range("F2") = "data 3"
Excel.Workbooks("Output.xls").Save

1 个答案:

答案 0 :(得分:0)

我很惊讶这种作品永远都是。 :○

Excel.Workbooks指的是VBA项目中引用的通用Excel类,但不是指以DoCmd.OutputTo开头的Excel的实际实例。

您需要获取实际对象。在您的情况下,我认为最简单的方法是在文件上使用GetObject()

这对我有用:

Sub TestOutput()

    Dim wb As Excel.Workbook

    DoCmd.OutputTo acOutputTable, "tblOutput", acFormatXLS, "D:\Output.xls", True
    Set wb = GetObject("D:\Output.xls")

    wb.Worksheets("tblOutput").Rows("1:3").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

End Sub