
Access2007でマクロを使ってExcel2007のファイル(xlsx)形式へエキスポートします。その際、
・「ワークシート変換」を指定
・ワークシートの種類に「Excel Work book」
・出力ファイルパスに「(絶対パス)\(ファイル名).xlsx」
としました。
既にAccess2007のテーブルには、65535行を超える200000行のレコードが入っていることが確認できてます。
マクロを実行すると、「指定範囲を広げることができません」とダイアログが出てしまい、マクロが中断し、異常終了してしまいます。
windowsXP SP2 pentium4を使用。
異常終了せず、全レコードをファイルにエキスポートする方法はありませんか?
宜しくおねがいいたします。
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」を指定します。
ご回答ありがとうございます。
>> 「指定範囲を広げることができません」とダイアログが出てしまい、マクロが中断し、
>> 異常終了してしまいます。
>
>ここで言われている『異常終了』というのは、「以降のマクロが一切処理されなかった」
>という意味でよろしいでしょうか。
>(Accessアプリケーションが落ちた、といったことではなく、と)
はい、マクロが中断されただけで、Accessアプリケーションは動作しています。
実は、手作業で出力ファイル削除してからも再実行してみましたが、
同じエラーが発生していました...
『ヘルプ』ボタンのエラー詳細については、再度確認してみます。
65535行は試していないですが、3万行程度で実施すると正常に動作していました。
No.3
- 回答日時:
#1です。
acSpreadsheetTypeExcel12 としたのは、サイズが小さい方がいいのかな程度のものです。
テーブル構成「ID」「F1」~「F10」
IDはオートナンバー、F1~F10はテキスト型、サイズ100で内容は「あいうえおかきくけこ」の10文字。
レコード数は200000レコード。
acSpreadsheetTypeExcel12 で出力した xlsb ファイルは、1462272バイト。
acSpreadsheetTypeExcel12Xml で出力した xlsx ファイルは、8974336バイトでした。
どちらでも 65535行超え出来るようですので、ご自身で判断してください。
(出力時の処理時間は違いがあるようですが)
(ちょっと書き変えればいいので、どちらでも検証できると思います)
DexMachina様、ありがとうございました。
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」を付けるのだと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/04 10:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
このQ&Aを見た人はこんなQ&Aも見ています
-
Access2000よりエクセルへエクスポートする際の範囲?
その他(データベース)
-
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
Accessのスプレッドシートエクスポートで、シートが追加されてしまう
Access(アクセス)
-
-
4
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
5
ACCESS側からEXCELの書式を設定するには?
Visual Basic(VBA)
-
6
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
7
【ACCESS/必須条件とOR条件を組み合わせる】
その他(Microsoft Office)
-
8
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
9
選択したチェックボックスのみチェックを入れたいのですが
その他(データベース)
-
10
アクセスで入力したデータの順番が変わってしまいます
その他(ビジネス・キャリア)
-
11
VBAでFormat がうまく使えない
Excel(エクセル)
-
12
【Access】テーブルをエクスポートする際、ファイル名末尾に日付をつけたい!
Windows 10
-
13
インポート時のエラー「データ型の変換エラー」
Access(アクセス)
-
14
ODBCの接続に失敗しました(3146)について
その他(Microsoft Office)
-
15
Accessのリンクされたテーブルでリンク先ではデータを変更出来ないようにするには?
Access(アクセス)
-
16
access2010 コマンドまたはアクション''は無効です。について
その他(ソフトウェア)
-
17
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
18
ACCESS エクスポートについて
その他(データベース)
-
19
ACCESSでExcelにデータ出力、高速化
その他(プログラミング・Web制作)
-
20
Access2007 textboxに入力できない。
IT・エンジニアリング
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
100万行のCSVを10万行ずつのフ...
-
Palm Desktop ソフトウェアの...
-
Access インポート
-
SQL*Loaderの事で その2
-
ThunderbirdのメールをCSVでま...
-
accessで項目内の文字を自動改...
-
タブ区切りデータからダブルコ...
-
accessでcsvファイルをインポー...
-
MS-Accessの保存方法
-
エクセルVBAの「組み込みダイア...
-
OutlookからBecky!へ
-
TXTで作成したファイルをDATフ...
-
csvファイルをAccessに取り込む...
-
EXCELから固定長テキスト...
-
CSVファイルのセルに「01」と入...
-
CSV形式のファイルを読み込んで...
-
【Excel】[Expression.Error] ...
-
ACCESS で 項目名を出力せずに...
-
Becky!で「メールサーバーへの...
-
共有フォルダに誰が何にアクセ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
100万行のCSVを10万行ずつのフ...
-
【CSVファイル】先頭の文字列に...
-
ThunderbirdのメールをCSVでま...
-
カンマがデータとして入ってるC...
-
アクセスでcsvに出力した際、頭...
-
タブ区切りデータからダブルコ...
-
Access インポート
-
Access2007のエキスポートについて
-
csvファイルが保存すると数...
-
TXTで作成したファイルをDATフ...
-
accessで項目内の文字を自動改...
-
Access95のエクスポートで教え...
-
Accessで小数点以下を切り捨て...
-
PSV形式ファイルをAccessにイン...
-
AcceseからCSVファイルに吐き出...
-
PL/SQLで文字列を分割
-
Accessでdatファイルのインポート
-
アクセスがインポートできる容...
-
TSVのファイルをACCESSにインポ...
-
OutlookからBecky!へ
おすすめ情報