【ACCESS VBA】ACCESSのデータをCSVファイルに出力するときの注意点
YouTubeでも解説しています。是非、ご覧ください。
ACCESSのテーブルデータ、または、クエリのデータを、そのままCSVファイルにしたい時があります。
しかし、ある条件が、その作業を阻むときがあります。
今回も諦めていました。
ACCESSのデータをCSVファイルに出力するときの注意点
こんにちは。伊川(@naonaoke)です。
CSVファイルは、実務では必須ですね。
インポートしたり、エクスポートしたり、私は、CSVファイルを、扱わない日はないです。
しかし、CSVファイルは、Excelの形式に、紐づけされていることが多く、文字を扱う場合には、問題がありません。
しかし、数字や、日時を扱うときは、要注意です。
それは、正しく反映されないときがあります。
その正しく反映されないときに、ぶち当たりました。
何をやってもうまくいきませんね
そんな時の失敗談を記載します。
このブログはこんな人にお勧め
今、VBAでハマっている人
VBAで、2日以上悩んでいる人
実行しても、正しく反映されず、VBAをやめようと思っている人
このブログを、読み終わるころには・・・・
今まで、利用していなかった機能を見直してみましょう。
その見直しが、思いもよらず解決へ、つながります。
無理に、VBAを利用して難しく考えないようにしましょう。
ACCESSから、16桁の数値を出力する
なぜ、16桁の数字なのか?
もちろん競馬です。
ACCESSから、抽出した、馬券の買い目を自動で抽出するからです。
もちろん、手動で買い目の入力してもいいのですが、ヒューマンエラーの恐れがあります。
事実、私は、入力間違いにより、万馬券を、2回のがしています。
もっとも、入力間違いにより、万馬券をGETしたこともあります。
しかし、絶対に妥協できません。
競馬となるとね。
ACCESSから、16桁の数値を出力する 作業手順 その1 CSVファイルを作成するコード
これは、意外とカンタンでした。
Sub CSVエクスポート()
DoCmd.TransferText _
TransferType:=acExportDelim, _
TableName:="Q_test1", _
FileName:="C:\Users\P125028\Desktop\20211201_" & Format(Date, "yyyymmdd") & ".csv"
End Sub
このコードを実行するだけなのです。
しかし、今回のように、16桁の数字の場合は、カンタンにはいかないのです。
ACCESSから、16桁の数値を出力する 作業手順 その2 実際に出力してみた
この数字の羅列をCSVで出力します。
数字が、左詰めなので、もちろん、ACCESSは、数字ではなく、文字列をして扱っています。
出力すると、上記のようになります。
Excelは、12桁以上の数字は、上記のように、指数で表示します。
しかし、表示上、指数形式になっているだけで、1234567891234567のようになっているかもしれません。
そんな時は、メモ帳で確認してみます。
このような表示になります。
これは、1234567891234567を、文字として扱っているので、1234567891234567の前後に、ダブルクォーテーションが付きます。
場合によっては、1.234587E+15のように表示される場合があります。
結局、Excelの機能が邪魔をして、うまく表示されないのです。
ACCESSから、16桁の数値を出力する 作業手順 その3 ハマりの思考
ここからが、ハマりました。
考えたこと
VBAで、一旦、Excelを起動させて、A列を文字列にしてから、CSVで保存する。
⇒できたけど、文字化けが発生
メモ帳を起動して、CSVファイルで保存する。
⇒やろうと、思ったけど、面倒だからやめた
ACCESSとExcelを連携して、CSVファイルを作成する
⇒これが、王道でしょうが、コードを書くのが面倒。
カンタンなコードで出力できるのに、なんか悔しい。
ACCESSから、16桁の数値を出力する 作業手順 その4 テーブルを再設定
テーブルのフィールドサイズを、十進型
精度を、16、つまり、16桁の16です。
桁が、16桁あるのに、指数形式で表示されていないです。
ACCESSって、すげーとおもいました。
これでCSV出力をして、ダブルクォーテーションがなければ成功です。
ダブルクォーテーションがなくなりました。
これで完成です。
数値型の[フィールドサイズ]プロパティ
オートナンバー型の[フィールドサイズ]プロパティ
短いテキストの[フィールドサイズ]プロパティ
ここがポイント
ACCESSのことは、知っているつもりでしたが、全然でした。
当然、もっと、知らないこともあると思います。
ACCESSの内部のことも、理解できれば、もっと便利な、ツールを作成できると思います。
まとめ
今回ほど、テーブル設定の大切さが、身に染みたことはありませんでした。
テーブル、クエリ、フォーム、レポート、すべてそろってACCESSですね。
今回も最後まで読んでいただきありがとうございました。