• ベストアンサー

Access2007のエキスポートについて

Access2007でマクロを使ってExcel2007のファイル(xlsx)形式へエキスポートします。その際、 ・「ワークシート変換」を指定 ・ワークシートの種類に「Excel Work book」 ・出力ファイルパスに「(絶対パス)\(ファイル名).xlsx」 としました。 既にAccess2007のテーブルには、65535行を超える200000行のレコードが入っていることが確認できてます。 マクロを実行すると、「指定範囲を広げることができません」とダイアログが出てしまい、マクロが中断し、異常終了してしまいます。 windowsXP SP2 pentium4を使用。 異常終了せず、全レコードをファイルにエキスポートする方法はありませんか? 宜しくおねがいいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

> 「指定範囲を広げることができません」とダイアログが出てしまい、マクロが中断し、 > 異常終了してしまいます。 ここで言われている『異常終了』というのは、「以降のマクロが一切処理されなかった」 という意味でよろしいでしょうか。 (Accessアプリケーションが落ちた、といったことではなく、と) それでよろしければ、多分こちらで現象を再現できました。 指定したファイルに、既に同名のワークシートが(そしてそこにデータが)存在するために、 ご質問のエラーになったものと思われます。 上記ダイアログで『Ok』ボタンの右隣に出たはずの『ヘルプ』ボタンを押すと、以下の 文が表示されます: > 指定範囲を広げることはできません。(エラー3434) > Microsoft Excel Version 5.0 の指定範囲に行を追加する際、値が入っているセルを > 検出しました。追加処理によりこのようなセルを上書きすることはできません。 ・・・少なくともAccess2003の『ワークシート変換』では、出力しようとしたワークシートが 既存のものとかぶる場合は上書きされていたはずなのですが、Access2007ではその辺り の仕様が変わってしまったようです。 従って、解決策としては、出力しようとしているxlsxファイルから、当該シートを予め削除 しておく、ということになるかと思います。 (VBAなら自動化できますがマクロでは無理なので、手作業になってしまいますが(汗)) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ No.1の方の回答について: マクロの『ワークシート変換』は、VBAの『DoCmd.TransferSpreadsheet』と(ほぼ) 同じものです(前者を、Accessの「VBAに変換」機能を通すと、後者に変換される)。 で、回答中の「acSpreadsheetTypeExcel12」は、「Excel Binary Workbook」を 指定する定数ですので、出力ファイルは指定された「xlsb」ファイル(Excel バイナリ ワーク シート形式)で出力されるため、拡張子が「xlsx」だとエラーになってしまいます。 TransferSpreadsheetで「Excelワークシート形式」(拡張子xlsx)を出力する場合は、 「acSpreadsheetTypeExcel12xml」を指定します。

hhhkk118
質問者

お礼

ご回答ありがとうございます。 >> 「指定範囲を広げることができません」とダイアログが出てしまい、マクロが中断し、 >> 異常終了してしまいます。 > >ここで言われている『異常終了』というのは、「以降のマクロが一切処理されなかった」 >という意味でよろしいでしょうか。 >(Accessアプリケーションが落ちた、といったことではなく、と) はい、マクロが中断されただけで、Accessアプリケーションは動作しています。 実は、手作業で出力ファイル削除してからも再実行してみましたが、 同じエラーが発生していました... 『ヘルプ』ボタンのエラー詳細については、再度確認してみます。 65535行は試していないですが、3万行程度で実施すると正常に動作していました。

その他の回答 (2)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.3

#1です。 acSpreadsheetTypeExcel12 としたのは、サイズが小さい方がいいのかな程度のものです。 テーブル構成「ID」「F1」~「F10」 IDはオートナンバー、F1~F10はテキスト型、サイズ100で内容は「あいうえおかきくけこ」の10文字。 レコード数は200000レコード。 acSpreadsheetTypeExcel12 で出力した xlsb ファイルは、1462272バイト。 acSpreadsheetTypeExcel12Xml で出力した xlsx ファイルは、8974336バイトでした。 どちらでも 65535行超え出来るようですので、ご自身で判断してください。 (出力時の処理時間は違いがあるようですが) (ちょっと書き変えればいいので、どちらでも検証できると思います) DexMachina様、ありがとうございました。

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

DoCmd.TransferSpreadsheet を使われてはいかがでしょう。 (マクロはあまり使ったことがないので、どのような指定になるのかは分かりません) コマンドボタン「btn01」をクリックした時、テーブル「T_T3」を「E:\tmp\abc」に出力する時の例です。 出力されたファイルの拡張子は「xlsb」になりました。 Private Sub btn01_Click() DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "T_T3", "E:\tmp\abc", True End Sub 拡張子「xlsx」を付けた「E:\tmp\abc.xlsx」で実行すると、 ファイルは出来上がりますが、ファイルダブルクリック時以下のエラーになります。 Excel でファイル 'abc.xlsx' を開くことができません。ファイル形式またはファイル拡張子が正しくありません。ファイルが破損しておらず、ファイル拡張子とファイル形式が一致していることを確認してください。 拡張子を「xlsb」に変更すると開けます。 ファイル名には拡張子を付けないか、「xlsb」を付けるのだと思います。

hhhkk118
質問者

お礼

回答ありがとうございます。 どうなるか是非試してみたいと思います。

関連するQ&A

  • マクロでエクスポート(アクセス97)

    W2000・アクセス97・エクセル2000です。 アクセスのクエリーを、マクロを使用して、新規にエクセルにエクスポートしたいです。 マクロでは、 ・変換の種類 エクスポート ・ワークシートの種類 Excel97(2000は選択の中になし) ・テーブル名 エクスポートしたいクエリーを指定 ここまでは、わかりましたが、ここまででマクロを実行すると、 ”このアクションまたはメゾットを実行するには、[file name/ファイル名]が必要です” と、表示され、エラーになります。 できましたら、この後、どのようにすればよいのか? もしくは、こういう方法で、というのがありましたら、お教えくださいませ。詳しく解説してくれている、URLのご紹介でも、かまいません。 お手数ですが、どなたか、よろしくお願い申し上げます。

  • Accessのクエリをマクロでエクスポートしたい

    Access2002を使っています。 マクロでクエリをExcelファイルにエクスポートしたいのですが、どうしたらいいかわかりません。 「ワークシート変換」を選択してもテーブルしか選べないので・・・ ご存知の方、どうぞ優しくご教授ください~

  • AccessのマクロでExcelにエクスポートしたい

    レコード数が5万程度あるクエリを マクロでExcelにエクスポートしたいのですが、 「出力」を選ぶと、「出力する行が多すぎて、指定した出力形式またはMicrosoft Accessの制限を越えています。」のエラーメッセージが表示されてしまいます。 マクロではなく、普通にエクスポートする際は、 Excelのバージョンを選択できるので、正常処理できるのですが、マクロの場合はどうすればいいのでしょうか? 宜しくお願いします。

  • AccessのテーブルデータをExcelの特定のワークシート名にエクスポートすることは可能ですか

    AccessのテーブルデータをExcelにエクスポートするようマクロを設定しているのですが、そのファイルの中の特定のシートにエクスポートすることは可能ですか?1つのExcelファイルの中で、エクスポートするテーブルを分けたいのです。 マクロですと、"ワークシート変換"アクションの引数[ファイル名]欄で何か設定するのでしょうか? それともAccessから直接は無理なので、Excelのマクロで自動化したほうがよろしいのでしょうか?教えてください。

  • accessからエクセルにエクスポートしたファイルを開きたい。

    accessのマクロ・ワークシート変換で4枚のシートを含むエクセルファイルを作るように設定をしたのですが、これをエクスポートが終わったら自動的に開くようにしたいのですが、どのようにしたらよいでしょうか。 VBAで DoCmd.OutputTo acOutputTable, "tbl_aaa", acFormatXLS, , True と試してみましたが、シートは一つのみになってしまいます。 1つのエクセルファイルに4枚のシートを出力して、それを立ち上がるようにしたいです。 DoCmd.TransferSpreadsheet acExport, … も考えたのですが、エクセルを開く書き方がわかりません。 よろしくお願いします。

  • アクセス2007のエクスポートについて教えてください!

    アクセス2007の質問です。 マクロでクエリをエクセル形式で出力する方法を教えて下さい。 アクセス2003では「ワークシート変換」というアクションがあったと思います。この機能をアクセス2007で実施したいと考えています。簡単なフォームのボタンを押すと、クエリに定義した内容がデスクトップ等にエクセル形式でエクスポートするように作りたいのです。 ご存じの方どうぞよろしくお願いいたします。

  • アクセス2000のマクロの設定について

    アクセスのマクロで、アクセスのデータベースを、指定したエクセルファイル内の、指定したシートにエクスポートするマクロ設定をしたいのですが、よく判りません。 マクロ設定で、アクションのワークシート設定を選ぶまでは判ったのですが、テーブル名、ファイル名、フィールド名の設定、範囲の設定の意味が判りません(ヘルプを見たのですが、理解出来ません)。どなたか設定方法を教えて下さい。

  • ACCESS2002のエクスポートで・・・

    特に困ってはいないのですが不思議に思ったので質問します。 OS:WinXP Pro 環境:ACCESS2002およびEXCEL2002 1.ACCESSでクエリ「TEST1」をEXCELにエクスポートします。 2.エクスポートして作成されたEXCELファイルを開き、シート名「TEST1」を「TEST2」に変更します。 3.再度、ACCESSでクエリ「TEST1」を1.で作成されたEXCELファイルを指定してエクスポートすると「オブジェクト「TEST1」は存在します。置き換えますか?」旨のメッセージが表示されます。 指定したEXCELファイルにはシート「TEST1」は存在しないのになぜそのようなメッセージが表示されるのでしょうか?ちなみそのまま出力するとクエリ「TEST1」のデータはEXCELのシート「TEST2」に出力されます。

  • Accessマクロでのエクスポート

    Accessマクロで「書式設定を保持したままエクスポート」を使用し、テーブルをExcelにエクスポートしています。 終了時に、正常終了メッセージを出力していますが、エクスポート時のファイル選択ダイアログで「キャンセル」を押下した際も、この終了メッセージが出力されてしまいます。 マクロのアクションカタログにて、「ファイル選択ダイアログでキャンセルが押されたか?」を判定することはできますでしょうか?

  • ACCESS2007のエクスポート上限

     ACCESS2007のデータにフィルタを掛けて、絞り込み、その抽出結果をEXCEL2007にエクスポートしようとしたところ、 「選択しているレコードの数が多すぎるため、一度にクリップボードにコピーできません。自分で、6万5千件単位に分けて下さい」と帰って来ました。。。 上記メッセージでググると、マクロ等を利用して解決されている例が見つかりましたが、 ちょっと自分の頭では理解できませんでした。。 もっと簡単なコピペで済むようなクエリ等で解決方法有りませんでしょうか? ACCESSのデータが300万行レコード EXCELのデータが平均10~20万行になるようなデータです。。。 以前は、何とか出来ていたのですが、その時のACCESSのバージョンは2010だったかも知れません。。 現在はACCESS2007しか無いのですが、この環境で何とかする手は有るでしょうか? エクスポート形式をEXCELからTXTに変更しても、同じ制限に掛かります。CSV型式というのはないようです。。