見出し画像

【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ですね。

今回も最後まで読んでいただきありがとうございました。

よろしければサポートをお願いします。いただいたお金に関しては、書籍の購入に充て、より良い情報を皆様に提供します。