お世話になります。
こちら、エクセルVBA初心者です。
以下のコードは、アクセスVBAにて、
アクセスからエクセルにテーブルを既存のエクセルファイルへ新規シートとして、
エクスポートし、一行目を削除した上で、
これを既存の別シートの一番最後の行の一つ下の行に張り付けています。
ところが、
実行時エラー’52090’アプリケーション オブジェクト定義エラー
と、
4744行に張り付いてしまう時と、
きちんと上手く行く時があります。
どのような違いがあるのか、
また、なぜそのような現象が起こるのか、どう対処したらよいのか、
よろしくご教授ください。
実行時エラー’52090’アプリケーション オブジェクト定義エラー
Private Sub btnエクセルエクスポート_Click()
Const xlMinimized = -4140 Dim nip As DAO.Recordset Dim sttbl4 As String Dim stSheet As String Dim Excel As Object Dim wb As Object Dim llastrow As Long Set Excel = CreateObject("Excel.Application") 'Excel Excel.WindowState = xlMinimized '最小化 Excel.Visible = True '表示 DoCmd.OpenQuery "Q_今月蓄積進捗" ’このクエリでT_今月蓄積進捗のテーブルができます。 sttbl4 = "T_今月蓄積進捗" 'Accessファイルを指定します。 stSheet = "受付情報(蓄積)" Set nip = CurrentDb.OpenRecordset("T_今月最新進捗") DoCmd.TransferSpreadsheet acExport, _ acSpreadsheetTypeExcel9, sttbl4, stvardir2, False nip.MoveLast Set wb = Excel.Workbooks.Open(stvardir2) 'excelファイルを開く wb.Sheets(sttbl4).Rows(1).Delete 'クエリシートの1行目削除 wb.Application.DisplayAlerts = False 'メッセージ非表示 llastrow = Cells(Rows.Count, 1).End(xlUp).Row’エラーが起きるのはここ wb.Sheets(sttbl4).Range("A1:AD" & nip.RecordCount).Copy 'コピー wb.Sheets(stSheet).Range("A" & llastrow).Offset(1, 0).PasteSpecial xlPasteValues wb.Sheets(sttbl4).Delete 'クエリシート削除 wb.Application.DisplayAlerts = True 'メッセージ再表示 wb.Close True '閉じる Excel.Quit 'Excel終了 nip.Close Set nip = Nothing DoCmd.SetWarnings True
Exit Sub
VBA
試したこと
既存のシートにて二行目から下全部を削除したら、ちゃんと2行目に張り付きました。
また、4744、4743行にはもちろん、何も入っていません。
回答1件
あなたの回答
tips
プレビュー