EXCEL VBAでのCSV出力について

このQ&Aのポイント
  • EXCEL VBAを使用してCSV形式でデータを出力する方法について教えてください。
  • Excelで入力された日付をVBAでCSV出力する場合、日付の形式が変わってしまいます。そのため、保存されたCSVファイルをExcelで読み込むと日付が文字列として認識されます。この問題を解決する方法について教えてください。
  • VBAでCSV保存する際に、日付をYYYY/MM/DD形式で保存する方法や、MM/DD/YYYY形式のCSVを日付としてExcelで認識させる方法について教えてください。
回答を見る
  • ベストアンサー

EXCEL VBAでのCSV出力について

EXCELに入力されたデータをCSV出力するプログラムを作成しました。データには日付が入っており年月日がYYYY/MM/DDの形で入力されています。これをハンド作業で名前をつけて保存でCSVに出力すると年月日はそのままの状態で保存されますが、VBAで保存するとMM/DD/YYYYの形になってしまいます。この状態で保存されると、次にEXCELで読み出すと年月日が文字列扱いになってしまいます。新しいマクロの記録で行っても結果は同じでした。 VBAで保存する際、YYYY/MM/DDで保存する方法はないでしょうか。 また、MM/DD/YYYYで保存されたCSVを日付としてEXCELに認識させる方法はあるでしょうか。 教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

#01です。 私のPC(XP Pro+Office2003)でテストを行ったときは、YMD形式で書き込めましたよ。またMDY形式のデータも正しく読み込めました。 となると、Officeのバージョン、マクロ、PC環境などの何かが異なるのでしょう。でも補足にもそれを判断する材料が全く書かれていないので、何とも回答のしようがありません 私がテストしたデータはA列に日付を入力しただけのものです  A列 2008/1/1 2008/1/2 2008/1/3 2008/1/4  以下続く そのデータに対して ActiveWorkbook.SaveAs Filename:="C:\Book1.csv" ,FileFormat:=xlCSV ,Local:=True の1行だけを実行したらどうなりますか? やはりダメなら先のURLにあるようなPC環境(日付のプロパティ等)も確認してください 読み込みで「文字列になる」も再現しませんのでコメントできません。「データ」→「外部データの取り込み」で読み込む手段もありますから試してみてください。

panajirou
質問者

お礼

zap35様 本日ご入力いただきましたマクロ1行のみで行ったところうまく行きました。 昨夜は何度やっても出来なかったのですが・・・。2度もご教授頂き有難うございます。 実際のプログラムにも組み込んで問題の無い事が確認できました。 有難うございました。

その他の回答 (1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

Offce2002以降なら  ActiveWorkbook.SaveAs Filename:="Z:\Book1.csv", _     FileFormat:=xlCSV ,Local:=True のようなマクロで表示形式通りにcsvに書き込めます。 逆にMDY形式(1/3/08)で作成された日付は  Workbooks.Open "Z:\Book2.csv" ,Local:=False で読み込めばYMD形式(2008/1/3)になります。 下記URLに説明がありますからご覧になってください http://support.microsoft.com/kb/410237/ja もし2000以前のバージョンなら文字列に変換してcsvにする方法が紹介されています。

panajirou
質問者

お礼

zap35様 ご返答頂き有難うございます。 マクロを自動保存してそのマクロに Local:=True を追加してみましたが、結果は同様にmm/dd/yyyy hh/mmでした。再度EXCELで読んでみましたが文字列のままで変更が出来ませんでした。保存する際のパラメーターで入力の状態が保たれれば一番いいのですが、何らかの手段はないものでしょうか?

関連するQ&A

  • CSVファイル

    質問の説明がうまくなくてごめんなさい。 エクセル作成したデータをCSVファイルで保存をしたのですが、メモ帳などで見るとそのときはいいのですが もう一度作成したエクセルと開くと日付入力をyyyy.mm.dd→yy.mm.ddに変更して保存をしたのですが yyyy.mm.ddになったままです。なぜなのでしょうか? よろしくお願いします。

  • エクセルVBA:日付データの変換がうまくいかない2

    http://okwave.jp/qa/q7615238.html の続きです。 問題内容が変わってしまったので、改めて質問させていただきます。 困っているところは、日付のセルのデータ表示をyyyy/mm/ddに固定したいのですがうまくいきません。 前回返信頂いた内容を参考に頑張ってみたのですが、以下のような現象に陥りました。 (1)1回VBAプログラムを通すと、CSVファイルにyyyy/mm/ddの日付データが書き込まれる。 (2)【その後、csvファイルを閉じて、もう一度csvファイルを開くと、mm/dd/yyyyの形式に戻っている。】 (2)の現象がなぜ起きるのかわかりません。MSの仕様なのでしょうか? どうしようもないのでしょうか?

  • Excel VBAについて

    Excel VBAについて ExcelのセルA1に日付データ(yyyy/mm/dd hh:mm)が入っています。 このエクセルファイルを開いている間、セルA1の日付(時分)が更新されたらマクロを実行するようにしたいのですが、どのようにしたらよいのでしょうか。 セルA1の日付データが更新されるタイミングは決まっていません。 セルA1の日付データが更新されたらマクロ実行というのが難しいのであれば、 10秒おきにマクロを実行というようなことができないでしょうか。 ご教授願います。

  • Excel VBAで教えてください。

    Excel VBAで教えてください。 テキストデータをExcelで読み込んだ後、Sheet1に以下のデータが入っており、 A列 B列   C列 氏名 開始日(yyyy/mm/dd) 終了(yyyy/mm/dd) テキストボックスに開始日(yyyy/mm/dd)、終了日(yyyy/mm/dd)、を入力し、入力した開始日から終了日のデータ検索し、A列からのデータをコピーし、Sheet2に貼り付けしたい。 テキストデータをExcelで読み込むコードはできたのですが、その後の処理ができずに困っています。 ユーザーフォームに入力するコードも教えてください。

  • VBAでExcelのヘッダーに文字列+セルの値を入れたい

    お知恵を貸してください。 Excelヘッダーについてです。 セルA1に日付が入っていて、この値をYYYY/MM/DDの形でヘッダーにしたいと思っているのですが、この日付の前に「日報」という2文字を必ず入れたいのです。 最終的な形は「日報YYYY/MM/DD」となればよいのですが、これはVBAで可能なのでしょうか。 今まで手入力していたのですが毎日印刷するものなので、自動化したいと思うのです。 よろしくお願いいたします。

  • Access VBA DoCmd.TransferTextについて

    ACCESS VBAでテーブルの情報をDoCmd.TransferTextを用いて CSV出力しようとしています。 しかし、"YYYY/MM/DD"形式のデータがどうしても"YYYY/MM/DD HH:mm" 形式で出力されてしまいます。 このメソッドを用いると必ずこうなってしまうのでしょうか? よろしくお願いいたします。

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

  • Excel97の日付の書式設定

    現在Excel97で日付入力をしたいのですが、 最終的に演算に使用する日付で yyyy/mm/ddとyyyy/mmどちらでも入力できる書式設定を探しています。 yyyy/mm/ddの指定にするとyyyy/mmと入力してもyyyy/mm/01となってしまいます。 yyyy/mmのセルとdd専用のセルを別に作ると、ddを入力した時に 閏年のエラーチェックなどがかけられないので演算部分(1年後該当日前日の指定等)がうまく働きません。 いい方法がありましたら教えてください。

  • (VBAにて)日付でデータを抽出するやり方

    ド素人なのですが、上司にマクロ作成を依頼され困っています。 下記に内容を記しますので、教えて下さい。 お願いします。 ・VBAを使ってExcelで管理してある管理表(下記参照)を 「発生年月日」をキーにして 「開始月:yyyy/mm」と 「終了月:yyyy/mm」をそれぞれ入力して、コマンドボタンを押したら  その指定した範囲内のみのデータを別シートに表示するように  して欲しい。 (例) 開始月:2007/8 終了月:2007/11 →2007年8月~2007/11月分の全データが別シートに表示される) ・管理表はこんな感じです。(大体、月に4件ぐらいあります)   発生年月日      件名    内容      完了日   (yyyy/mm/dd) (障害件名)  (障害内容)  (yyyy/mm/dd) よろしくお願いします。

  • エクセルVBAでシリアル値で読み込まれてしまう

    こんばんわ! エクセルVBAのユーザーフォームの質問です。 A1セルにある日付データ(yyyy/mm/dd形式)のデータをユーザーフォームのテキストボックスに入れるとシリアル値になってしまいます。 式は普通に aaa.text=range("a1") としています。 同様に時刻もなってしまうのですが、どうしたら通常のyyyy/mm/dd形式(時刻はhh:mm形式)で表示できるでしょうか? アドバイスの程よろしくお願いいたします。

専門家に質問してみよう