excelのテンプレートファイルにAccessからデータを出力するとエラーになります。
以下のコードで出力しています。
Do Until rs.EOF
'行コピー
.Worksheets(1).rows(line_no & ":" & line_no).Select
.Selection.Copy
.Worksheets(1).rows(line_no & ":" & line_no + 1).Select
.Worksheets(1).Paste
.Application.CutCopyMode = False
.Cells(line_no, 1).Value = rs!A
.Cells(line_no, 2).Value = rs!B
.Cells(line_no, 3).Value = rs!C
.Cells(line_no, 4).Value = rs!D
.Cells(line_no, 5).Value = rs!E
.Cells(line_no, 6).Value = rs!F
.Cells(line_no, 7).Value = rs!G
.Cells(line_no, 8).Value = rs!H
.Cells(line_no, 9).Value = rs!I
.Cells(line_no, 10).Value = rs!J
.Cells(line_no, 11).Value = rs!K
.Cells(line_no, 12).Value = rs!L
.Cells(line_no, 13).Value = rs!M
.Cells(line_no, 14).Value = rs!N
.Cells(line_no, 15).Value = rs!O
.Cells(line_no, 16).Value = rs!P
.Cells(line_no, 17).Value = rs!Q
.Cells(line_no, 18).Value = rs!R
.Cells(line_no, 19).Value = rs!S
.Cells(line_no, 20).Value = rs!T
line_no = line_no + 1
rs.MoveNext
Loop
何がいけないでしょうか。現状検証していると、line_no=34のときにエラー(1004)となり止まります。
コードの抜粋ではなく、コード全体を提示してください。
また、どの行でエラーが出るのか、エラーが出たときにエラーメッセージも提示してください。
あと、下記の部分は何を意図したコードか説明してください。
情報不足で申し訳ございません。
コード全体は下記です。
エラーメッセージは下記の通りです。
実行時エラー'1004'
アプリケーション定義またはオブジェクト定義エラーです。
まずは、動作確認中(デバッグ中)は、エクセルを表示させて実行しましょう。
エラーが出て中断すると、非表示のエクセルの残ってしまいますので。非表示のエクセルはPCをシャットダウンしないかぎり、閉じるのが難しいので。
エラーが出る前の行に下記のようなデバッグ用のコードを挿入して実行してみてください。
これでエラーが出て中断したときのイミディエイトウィンドウに出力されたものをコピーしてもらえますか。
それで原因がわかるかもしれません。
遅くなり申し訳ございません。
イミディエイトウィンドウに表示されたのは下記です。
AAAA-AAAAA-AAA
33
$A$33
その結果から判断するかぎりは、エラーがでるのは考えにくいですね。
ちょっとお役に立てそうにないです。
お付き合いいただきありがとうございました。
処理が中断した後、F5を押すと、処理は続くので何が原因なのか判断できない状況です。
(一定数コピペが進むとまた止まります。)
あまり良い方法ではないと思いますが、DoEventsを挟んで一時的に対応したいと思います。
(DoEventsを挟むと最後まで処理は進みます。遅いですが。)
コードを見ると、sqlから生成されたレコードセットをそのままシート上に出力するもののようですので、
CopyFromRecordsetメソッドを利用すると、1行のコードでできると思います。処理速度も高速です。
下記が参考になります。
こうしてみたらどうでしょう?
※コードの善し悪しは評価していません
Excel処理の問題のようなので、この掲示板(ACCESS掲示板)よりもExcelに強い場所で質問するとうまく解決できるかもしれませんね