プロが教えるわが家の防犯対策術!

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

A 回答 (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環境(日付のプロパティ等)も確認してください

読み込みで「文字列になる」も再現しませんのでコメントできません。「データ」→「外部データの取り込み」で読み込む手段もありますから試してみてください。
    • good
    • 2
この回答へのお礼

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

お礼日時:2008/01/04 18:52

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にする方法が紹介されています。
    • good
    • 0
この回答へのお礼

zap35様

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

お礼日時:2008/01/03 23:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!