- 締切済み
AccessからExcelへ保存
はじめまして 質問させていただきます。 【処理内容】 1.Accessにて作成したテーブルデータをTEMP.xlsとして出力 2.TEMP.xlsのデータを出力先.xlsへコピーする という処理を作っているのですが、具体的に 2-1.TEMP.xlsを1行コピー 2-2.ヘッダ用.xlsの最終行に貼り付け 2-3.TEMP.xlsの最終行まで繰り返す 2-4.ヘッダ用.xlsの名前を「出力先.xls」として保存する 2-5.ブックを閉じる と行っています。 それぞれに入るデータは TEMP.xls・・・Accessから作成されたエクセルファイル ヘッダ用.xls・・・「出力先.xls」のヘッダー 出力用.xls・・・TEMP.xlsのデータ+ヘッダ用.xlsのデータ というつくりです。 このとき、TEMP.xlsの最終セル位置を取得させているのですが、 なぜか65536行と、最大値を取得してしまいます。 (本来のデータは130件程度) データ件数と取得する行数を一致させたいのですが、どうすればいいでしょうか? 説明下手なうえ、開発環境が手元にない常態での質問で申し訳ないんですが、回答お願いいたします
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- shinkami
- ベストアンサー率43% (179/411)
手順複雑ですね データ件数は 例えば =COUNT(A:A) ではどうですか 他の件は別にQしてください ・テーブルのデータを条件を付けて絞り込む ・ACCESSよりエキスポートする、EXCEL側でインポートする ・テンポラリーファイルが無くてもワークシートを追加してこれに替える
- imogasi
- ベストアンサー率27% (4737/17070)
質問は複雑な書き方だが下記が骨子として使えると思うが。 >ヘッダ用.xlsの最終行に貼り付け と>ヘッダ用.xlsは別物か?ややこしい。 処理手順まで書かなくてよい。初心者なら、回答者のやり方でよい(自分に合ったもの)を判断すればよい。 ーー Sub test01() d = Range("a65536").End(xlUp).Row MsgBox d ActiveSheet.Range("a2:D" & d).Copy Workbooks("01化.xls").Worksheets("Sheet3").Range("A3") End Sub で出来るのでは。 上の例は TEMP.XLSと01化.xlsブック(コピーのデスチネーション)を開いておく。 TEMPブックのコピーするシートをアクチブにしておいて、(プログラムでも出来るが、上記は手動でアクチブにして実行のこと)実行すると、上例では01化.xlsの指定シート(Sheet3)に貼り付ける。
- tag1701
- ベストアンサー率54% (67/123)
>このとき、TEMP.xlsの最終セル位置を取得させているのですが、 なぜか65536行と、最大値を取得してしまいます。 これは最終セルという事ですので2003verの最終行に 移動させる命令をしているものと思われます。 エクセルはデータベースでは基本的にありませんので 130件が最終テーブルと認識しないのです。(そのままでは) この場合、一旦最終行までいってますので、空白行まで遡らせる 事が必要なようです。 下記記述を参考下さい。 Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Offset(1).Select 「合うように記述は変更してください」
お礼
回答ありがとうございます! 明日にならなければ試せないんですが、参考にさせていただきます! 本当にありがとうございました!