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/出力ファイル形式にファイル形式について書かれています。
テーブルから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/出力ファイル形式にファイル形式について書かれています。
コメント
コメントを投稿
・コメントはお気軽にどうぞ。
・記事に関係のないコメントはご遠慮ください。
・<b>, <i>, <a> などの一部の HTML タグを使用できます。