- 締切済み
AccessでExcel出力する際に「シングルコートなし」、日付は「YYYY/MM/DD」で出力したい
初めて質問させていただきます。 ACCESS2003で、出力用テーブルからCSVもしくはExcel出力をしたく、色々試してみましたが、希望通りにいかず悩んでおります。具体的には、以下のような悩みです。どなたか良いアイデアをお持ちでしたらご教授ください。 ---------------------------------- ●以下のプログラムでCSV出力をすると、日付に時間(0:00:0)が付加してしまう。 DoCmd.TransferText acExportDelim, "", "出力データ用テーブル", 出力ファイル名, True ●以下のプログラムでEXCEL出力をすると、日付は「YYYY/MM/DD」で出力されるが、全てのテキスト型のデータの頭に「'」シングルコーテーションが付いてしまう。 DoCmd.TransferSpreadsheet acExport, , "出力データ用テーブル", 出力ファイル名, True ●以下のプログラムでEXCEL出力をすると、日付が「dd-mm-yy」となってしまう。「YYYY/MM/DD」としたい。 DoCmd.OutputTo acOutputTable, "出力データ用テーブル", acFormatXLS, 出力ファイル名, True ---------------------------------- シングルコーテーションは付かずに、日付も「YYYY/MM/DD」と表示されることが希望で、ファイルはCSVでもEXCELでもどちらでも構いません。 どなたか良い方法をご存知でしたらご教授ください。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- DexMachina
- ベストアンサー率73% (1287/1744)
No.2のDexMachinaです。 > 【実施したこと】 Excelに出力するまでの流れとしては、 a)「テーブル1」から、テーブル作成クエリで「出力用テーブル」を作成、 b)「テーブル1」から、追加クエリで「出力用テーブル」に追加、 のどちらか、ということでよろしいでしょうか。 (特に「a)」の可能性が高いかなと推測していますが) その上で、データ元の「テーブル1」で書式を設定したのだとすると、残念ながら 「出力用テーブル」にはその書式は反映されませんので、Excelへの出力結果に ついては、日付表記が変わらない、という結果にならざるを得ないと思います。 どうやら、選択クエリに対しては書式が引き継がれるのですが、 ・追加クエリの場合は追加先のテーブルの書式設定に依存し、 ・テーブル作成クエリの場合はデフォルト設定(?)に戻される ということのようです。 (極端な例ですと、元のテーブルで「Yes/No型」のフィールドは、テーブル作成 クエリで別テーブルに複製すると、元がチェックボックス表示だったものが テキストボックス表示に変えられてしまう、というのがあります) ですので、上記「b)」のパターンでしたら、「出力用テーブル」の当該フィールドに 対して、直接書式を設定してやれば、Excelに対して書式が引き継がれるように なると思います。 また、「a)」の場合は、 イ)作成したテーブルに対して毎回書式を設定するか、 ロ)テーブル作成クエリで、日付に対してFormat関数を適用するか、 (→この場合、テーブル上のデータはテキスト型になってしまうため、 Excel出力時には先頭に「'」がついてしまい、今回の解決策にならず・・・) ハ)テーブル作成クエリをやめて「b)」の形に変更するか、 (全レコードを削除する削除クエリを実行後、追加クエリを実行、とすれば、 テーブル(+そこに設定した書式)は保持して、レコードだけの入替が可能) ニ)テーブル作成クエリの代わりに、選択クエリを直接「OutputTo」の対象に する、 といったことで回避できるのではないかと思います。 【一応参考まで】「教えて!goo」と「OK Wave」のID・パスワードの確認方法です。 教えて!goo: https://goo.e-srvc.com/cgi-bin/goo.cfg/php/enduser/std_adp.php?p_faqid=4323&p_created=1209548050&p_sid=HDAC4-8j&p_accessibility=0&p_redirect=&p_lva=&p_sp=cF9zcmNoPTEmcF9zb3J0X2J5PWRmbHQmcF9ncmlkc29ydD0mcF9yb3dfY250PTI5JnBfcHJvZHM9MTg2LDIyJnBfY2F0cz0mcF9wdj0yLjIyJnBfY3Y9JnBfcGFnZT0x&p_li=&p_topview=1 OK Wave: http://faq.okwave.jp/EokpControl?&tid=102908&event=FE0006
- Scotch56
- ベストアンサー率0% (0/0)
DexMachinaさん、ご回答ありがとうございました。 先週、質問させていただきましたScotch55です。 回答をいただいてから、質問者としてお礼を申し上げたくログインを試みておりましたが、ユーザーIDとパスワードが一致せず、ログインに失敗しており、時間ばかりが経過してしまいました。すみません。「Scotch56」というユーザーで再登録いたしました。以下、DexMachinaさんのアドバイスに沿い、実施した内容と結果です。 その後の経過をご報告いたします。 【実施したこと】------------------------------------------------ 出力用テーブルはクエリによってINSERTされるものなので、そのクエリが参照しているテーブルをデザインビューで開き、その日付フィールドを選択して、『書式』プロパティを、「yyyy/mm/dd」と設定してから、「OutputTo」実行しました。 【結果】-------------------------------------------------------- DexMachinaさんの場合とは違う結果となりました。 セルを選択した場合の表示は「yyyy/mm/dd」と変わりましたが、セルの上の表示は「dd-mmm-yy」のままでした。 【現状】-------------------------------------------------------- 方法を捜索中です。 何かよい方法が見つかりましたら再度、回答としてアップいたします。
- DexMachina
- ベストアンサー率73% (1287/1744)
問題になっている日付には、時刻部分は常にない(=全て「0:00:00」)、ということで よろしいでしょうか。 そうであれば、当該テーブルをデザインビューで開き、そのフィールドを選択して、 画面左下の『標準』タブの1行目『書式』欄に、「yyyy/mm/dd」と設定してから、 「OutputTo」を実行してみて下さい。 こちらの環境(Access2003・XP Pro・IBM ThinkPad X40)では、日付が 「08-JUN-08」(→セルを選択した場合に表示されるのは「2008/7/8」)から、 「2008/07/08」(→セルを選択した場合の表示は同じく「2008/7/8」)へと 変化しました。 どうやら、テーブルのフィールドに書式設定がある場合は、OutputToでは、Excelに 対しても同じ書式設定が出力されるようです。 (出力されたファイルのセルで「右クリック→セルの書式設定(F)」の表示形式で、 「ユーザー定義」として「yyyy/mm/dd」が設定されていることを確認しました) Hasky2007さんへ: 自身で作成・管理するDBではユーザー関数の定義も有効だと思いますが、 こういった質問サイトにおける回答にそれを多用するのは、適切ではないと 思うのですが、いかがでしょうか。 (同時に提示されない場合、一般の方には検証ができない、という問題もあります)
tab1: ID_日付_______単価___数量 _1_2008/07/07_\1,000_10.1 _2_2008/07/08_\2,000_10.2 [イミディエイト] ? FileWrite("C:\Temp\Test.csv", DBSelect("SELECT * FROM Tab1", ",", vbCrLF)) True Test.csv-メモ帳 1,2008/07/07,1000,10.1 2,2008/07/08,2000,10.2 さて、このように幾つかの関数を用意すれば僅か1行でCSVファイルは出力可能です。 ※どうしてもAccessの機能で実現できない場合でVBA関数を用いてもという場合は補足します。