当我在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
答案 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