• 締切済み

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でもどちらでも構いません。 どなたか良い方法をご存知でしたらご教授ください。 よろしくお願いします。

みんなの回答

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.4

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)
回答No.3

DexMachinaさん、ご回答ありがとうございました。 先週、質問させていただきましたScotch55です。 回答をいただいてから、質問者としてお礼を申し上げたくログインを試みておりましたが、ユーザーIDとパスワードが一致せず、ログインに失敗しており、時間ばかりが経過してしまいました。すみません。「Scotch56」というユーザーで再登録いたしました。以下、DexMachinaさんのアドバイスに沿い、実施した内容と結果です。 その後の経過をご報告いたします。 【実施したこと】------------------------------------------------ 出力用テーブルはクエリによってINSERTされるものなので、そのクエリが参照しているテーブルをデザインビューで開き、その日付フィールドを選択して、『書式』プロパティを、「yyyy/mm/dd」と設定してから、「OutputTo」実行しました。 【結果】-------------------------------------------------------- DexMachinaさんの場合とは違う結果となりました。 セルを選択した場合の表示は「yyyy/mm/dd」と変わりましたが、セルの上の表示は「dd-mmm-yy」のままでした。 【現状】-------------------------------------------------------- 方法を捜索中です。 何かよい方法が見つかりましたら再度、回答としてアップいたします。

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

問題になっている日付には、時刻部分は常にない(=全て「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ではユーザー関数の定義も有効だと思いますが、 こういった質問サイトにおける回答にそれを多用するのは、適切ではないと 思うのですが、いかがでしょうか。 (同時に提示されない場合、一般の方には検証ができない、という問題もあります)

noname#140971
noname#140971
回答No.1

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関数を用いてもという場合は補足します。

関連するQ&A

  • アクセスでyyyy/mm/ddをeemmddに変換

    アクセスでyyyy/mm/dd(日付型)のフィールドがあります。 そのフィールドをクエリで抽出し、csvファイルとして出力した時 eemmdd表記になっているようにするにはどうすればよろしいでしょうか。 宜しくお願い致します。

  • ACCESS 日付型でEXCEL出力 

    日付/時刻型の項目に yyyy/mm/dd hh:mm:ss(2007/01/11 12:10:33)の形で入っているのですが、 以下のような処理でEXCELにエクスポートすると・・・ strSQL = "SELECT Time AS 日時 FROM T_TIME" Set qryBuf = CurrentDb.CreateQueryDef(Q_Time, strSQL) DoCmd.TransferSpreadsheet acExport, , Q_Time, txtFileName, True EXCELの表示は「2007/01/11」と表示されてしまいます。 表示形式を変更すれば「2007/01/11 12:10:33」で表示されるのですが その手間は省きたいと思っています。 一発で「yyyy/mm/dd hh:mm:ss」の形式で出力する方法は無いでしょうか?

  • DataGridViewでyyyy/MM/dd

    SQLServer2008で作ったデータベースをVB2010のDataGridViewで表示させております。 DataGridViewで日付列を"yyyy/MM/dd"のスラッシュ入り10桁で表示させたいのですが表示されません。 データベース側でのデータ型は「date」となっております。 DataGridView1.Columns("日付").DefaultCellStyle.Format = "yyyy/MM/dd" こう記述すればいいと思ったのですが、「20111227」とスラッシュ無しで表示されてしまいます。 DataGridView1.Columns("日付").DefaultCellStyle.Format = "yyyy年MM月dd日" これは「2011年12月27日」と表示することを確認できました。 DataGridView1.Columns("日付").DefaultCellStyle.Format = "yyyy-MM-dd" これは「2011-12-27」と表示することを確認できました。 どのようにしたら"yyyy/MM/dd"形式で表示させることが出来るのでしょうか 指導のほど、よろしくお願い致します。

  • yyyy/M/dをyyyy/MM/ddに変換

    SQLServer 2005にて文字列型に入っている日付データの変換を行いたいと思っています。 現状yyyy/M/d(2010/1/1)のようになっているのをyyyy/MM/dd(2010/01/01)に変換したい のですが方法が分かりません。 SELECT CONVERT(DATETIME,(CONVERT(VARCHAR(10),テーブルの値)),120) FROM テーブル名 とするとCHAR データ型から DATETIME データ型への変換の結果が日付/時刻の値の範囲外です。 というエラーになっていまいます。どういった方法なら実現できるのでしょうか。 すみませんがご教授ください。 宜しくお願い致します。

  • アクセス 数値+日付をyyyy/mm/dd(aaa

    テーブルに 20121201aaa 20121203bbb と言うデータがあるのですが これをクエリで あ2012/12/01(土) あ2012/12/03(月) に変えるにはどうすればいいでしょうか 数値の後ろの文字はいろんなパターンがあるので置換じゃ追いつきません。 SELECT Format(Left([テーブル1]![test],8),"yyyy/mm/dd(aaa)") AS 日 FROM テーブル1; にすると#エラーになってしまいます。 SELECT Format(CDate(Left([テーブル1]![test],8)),"yyyy/mm/dd(aaa)") AS 日 FROM テーブル1; これでもダメでした・・・

  • エクセルで日付をyyyy/mm/ddにしたい

    今 A1=S B1=30303 というでーたがあり二つのセルを組み合わせて 最終的にyyyy/mm/ddしたいのです。 ひとまず、S30303にして結合させて、TXTにして エクセルで読み込む際に日付形式にして読み込ませると、日付形式になったのですが、 年の桁数が二桁のものだけはそのままの数字のままで読み込んでしまいます。 他に方法があれば、他のやり方でもいいのですが、 yyyy/mm/ddにするにはどうしたらいいのでしょうか ご教授ください

  • yyyy/m/d h:mmという表記をyyyy/mm/ddにしたい

    エクセルに関する質問です。よろしくお願いします。 シート上でyyyy/m/d h:mm(例えば2009/5/1 3:04や2009/6/15 12:04のように)で表記されている箇所を、時間表記を切って「yyyy/mm/dd」だけにしたいと考えています。 「セルの書式設定」の「表示形式」タブで設定すれば表示上は「yyyy/mm/dd」になるのですが、データ上は「h:mm」が残っています。 そのためピボットテーブルで「yyyy/mm/dd」の情報をベースに、集計しようとすると「h:mm」のデータが邪魔になってしまいます。 何とかなりませんでしょうか? よろしくお願いいたします。

  • yyyy/mm/ddの日付に一括変換するマクロ

    [セルの書式設定] の [表示形式]が標準(日付ではない)で単なる文字列となっている「mm-dd-yyyy」や「mm/dd/yyyy」のデータをマクロで「yyyy/mm/dd」の日付データに一括変換するマクロを教えてください。 たとえば、日付データが列Aにある場合にはDATE関数で、 =DATE(RIGHT(A2,4),LEFT(A2,2),MID(A2,4,2)) でも変換可能ですが、対象ファイルが多数、各ファイルにも対象の列が多数、そしてファイルの更新頻度も多いため、DATE関数を使用することは現実的ではない事情があります。 このためマクロを使用して処理させたいです。 添付のサンプルの例で一括変更するマクロを教えてください。 なお、Excelは2007を使用しています。

  • 【Access】できればクエリにて 日付(yyyy/mm/dd)+時間(hh:mm)の計算 

    いつもお世話になります。 フィールド「日付」:日付 (S) ~YYYY/MM/DD形式~ と フィールド「時間」:時刻 (S) ~HH/MM形式~ があります。 これらを合算し、 (1)日付 (標準)  ~YYYY/MM/DD HH:MM:SS形式~ (2)日付 (標準?) ~YYYY/MM/DD HH:MM形式~ にしたいのですが、 レコードの更新欄ではどのようにビルドさせればよろしいでしょうか? 教えていただけますでしょうか? よろしくお願いします。

  • 「yyyy/mm/dd hh:mm」が「yyyy/mm/dd hh:nn」へ変化する

    access2003を使用しています。 時刻の「分」の表示形式で気になることがあるのですが テーブルのデザインで フィールド1のデータ型を「日付/時刻型」にし 書式を「yyyy/mm/dd hh:mm」と入力しても 「yyyy/mm/dd hh:nn」に変化してしまいます。 問題なく「2009/02/28 20:33」と表示されるのですが なぜmからnへ変化してしまうのでしょうか? また デザインで書式を「hh:mm」だけ入力した場合は 「時刻 (S)」へ変化します。 何か少しでもわかる方ご回答よろしくお願いします。