2016-11-22 16 views
0

MS Accessで次のコードを実行すると、最初の実行時にサブスクリプトが範囲外のエラーになる。エラーで[OK]をクリックしてもう一度実行しても問題ありません。データベースを閉じてもう一度開くと、最初の実行時に再びエラーが発生します。最初の実行では範囲外のエラーが発生する

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

2行目は、最初の実行時に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 
関連する問題