質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1705閲覧

エクセルVBA、実行時エラー’52090’と4744行に張り付いてしまう

tokumeiko

総合スコア2

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/05/15 07:21

お世話になります。
こちら、エクセル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行にはもちろん、何も入っていません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/05/15 08:24

・タイトルには「エクセルVBA」とあり本文には「アクセスVBA」とあります。どっちですか? ・コードは「コードの挿入」で記入してください。
tokumeiko

2020/05/15 08:28

ありがとうございます。 ええと、アクセスからエクセルを操作しています。アクセルVBAにて、エクセルを操作ですね。 あと、それから、こちらの都合で18時から先土日はお答えできません。すみません。 コードの挿入は、ちょっとわかりません。調べてみます。すみません。
guest

回答1

0

ベストアンサー

AccessのVBAは詳しくないし、動作確認もしていませんが、エラーの行で直接Cellsと書いているのが気になります。
AccessでCellsと書くと、どのオブジェクトを指すんでしょうかね?
ひとまずきちんとワークシートを明示してあげたらどうでしょうか。

VBA

1llastrow = Cells(Rows.Count, 1).End(xlUp).Row’エラーが起きるのはここ 2 ↓ 3llastrow = wb.Sheets(stSheet).Cells(wb.Sheets(stSheet).Rows.Count, 1).End(xlUp).Row’エラーが起きるのはここ

投稿2020/05/15 08:28

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tokumeiko

2020/05/15 08:33

ありがとうございます。 なるほどです。やってみます。評価というのはあとでで大丈夫でしょうか?。 ちょっと、色々調べたり、実行してみたりします。 お返事は月曜になります。すみません。
ttyp03

2020/05/15 08:49

もちろんあとからで大丈夫です。 外している可能性もありますから。
tokumeiko

2020/05/18 06:43

今の所、安定して動いています。ありがとうございました。 どうして、このような簡単な事が気が付かないんでしょうね。自分の馬鹿さ加減に泣きそうです。 お返事が遅れましてすみませんでした。
ttyp03

2020/05/18 06:51

一応効果はあったようで何よりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問