VBAでAccess2007からExcel出力

2003で作成されたシステムを2007へマイグレーションする為の調査をしていました。

テーブルからExcelを出力し、ファイルを開いてみると

「ファイルエラー:データが失われた可能性があります。」

とのエラーメッセージが表示されました。
最初は書式が失われる程度かと思っていましたが、色々と調査してみると出力されていない項目があり、本当に失われています。
これはまずい!ということで更に調査開始。

まず、出力しているコードを見てみましょう。

DoCmd.OutputTo acOutputTable, [テーブル名], acFormatXLS, [出力先], False

acOutputTable、acFormatXLSは定数です。
色々と調べてみると、出力ファイル形式の指定である acFormatXLS の中身は「Microsoft Excel (*.xls)」が設定されており、
実際には「Excel 5.0/95 ブック (*.xls)」として出力されている様です。
しかし他の出力ファイル形式は、acFormatXLSB、acFormatXLSXで想定しているものと違います。

そこで、定数を使わずに直で指定してみることにしました。

DoCmd.OutputTo acOutputTable, [テーブル名], "Excel 97-2003 ブック (*.xls)", [出力先], False

見事にエラーメッセージの表示も無くなり、失われていたデータもきちんと出力されました。


しかし・・・出力ファイル形式をちゃんと準備してくれよ・・・


参考:OutputTo マクロ アクション
http://office.microsoft.com/ja-jp/access-help/HA001226271.aspx

Output Format/出力ファイル形式にファイル形式について書かれています。

コメント