2016-11-22 4 views
0

Microsoft Access에서 다음 코드를 실행할 때 첫 번째 실행시 범위를 벗어나는 subscript가 나타납니다. 오류에서 확인을 클릭하고 다시 실행하면 문제가 없습니다. 데이터베이스를 닫은 후 다시 열면 처음 실행시 오류가 발생합니다.처음 실행하면 범위 밖의 오류가 발생합니다

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

어느 라인이 오류를 얻을? –

+1

다른 코드의'DoCmd.OutputTo' 줄이 있습니까? 대신'DoCmd.TransferSpreadsheet'를 사용하는 것이 좋습니다. – finjo

+0

두 번째 줄, 첫 번째 실행시 Excel 통합 문서를 인식하지 못한다고 생각합니다. – user2369812

답변

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 
관련 문제