- ベストアンサー
Excel VBAでCSVファイルを読込むと何故か文字列が日付に変換されて困っています
- Excel VBAでCSVファイルを読み込む際に、文字列が日付に変換されてしまう問題に困っています。
- 具体的な状況として、CSVデータには住所情報があり、別のCSVにデータを移す処理を行っています。
- 通常は文字列をそのまま移すだけの作業ですが、特定の文字列が日付に変換され、問題が発生しています。修正方法がわからず困っています。
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- エクセル97で作成したファイルをcsvファイルに変換すると?
エクセル97で作成したファイルをcsvファイルに変換すると住所の地番を入力したセルが、日付に変換されてしまいます。どのように設定をすればいいのでしょうか。 一つのセルに 1-3-5 と入力をして、csvファイルに変換すると 2001/3/5 となってしまいます。もちろんエクセルでのセルの書式設定は、文字列に設定しております。 1-3-5と変換されるためには、あとどのように設定すればいいのでしょうか?よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBA:日付データの変換がうまくいかない
久しぶりにVBAプログラムでハマってしまったので、教えてほしいです。 (1)エクセルシート上のボタンを押す (2)セルの内容を読み込む (3)CSVファイルに出力する というプログラムを組んでいるのですが、variant型で作った 日付のデータの形が変になってしまいます。 入力時は yyyy/mm/dd なのですが、出力されたCSVファイルを見ると、 mm/dd/yyyy と勝手に変換されていました。 何とか修正しようと試みたのですがうまくいきません。 ソースを書き込みます。 Dim data_input(11) As Variant '項目数11項目 Dim i As Integer Dim j As Integer Dim mydir As String Dim conv_data As Variant 'データ変換用 Dim rng As Variant Dim input_date As Date '入力日付(日付型) Dim conv_date As Variant '変換後の日付(ヴァリアント型) i = 0 For i = 0 To 8 data_input(i) = Worksheets("画面").Cells(4 + i, 3) Next i 'A列の一番下のセルを検索する e = Worksheets("local_data").Cells(1, 1).End(xlDown).Row '終端検索(空白のセルまで検索) '日付のデータはそのままCSV化するとおかしな表示となってしまうので、テキスト文字列に変換する 'For Each rng In Range("A1:A10") 'テキスト文字列に変更します。 ' rng.Value = "'" & rng.Text←何故か上手くいかなかった 'Next rng e = e + 1 '最終行+1 For i = 0 To 8 '申込日の時は文字化する為、別処理にする If (i = 0) Then input_date = data_input(i) tmp = CVar(input_date) 'Date型からVariant型に変換し、文字データとして書き込む 'tmpのデータを解体して組み替える 'split? Dim MyStr() As String 'この地点では月/日/年 MyStr() = Split(tmp, "/") '年/月/日に戻す MyStr (0) '月 MyStr (1) '日 MyStr (2) '年 '再結合する tmp = MyStr(2) & "/" & MyStr(0) & "/" & MyStr(1) Worksheets("local_data").Cells(i, i + 1) = tmp 'Worksheets("local_data").Cells(e, 1) = tmp Else Worksheets("local_data").Cells(e, i + 1) = data_input(i) '上部で入力したデータを書き込む End If Next i どうにかyyyy/mm/ddの形で日付が表示されるようにしたいのですが・・・・・ どなたか助言をお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- EXCELの日付データを文字列に変換したい
EXCELの和暦形式の日付データを文字列に変換する方法を教えてください。 たとえば、H17.9.2をそのまま文字列に変換したいのです。 最初から文字列データとして入力すれば問題ないのですが、日付データ(標準)として入力されたデータを書式→セル→文字列で変換するとシリアル値に変わってしまいます。(H17.9.2→38597) どうしたらよいのでしょうか。お願いします。
- ベストアンサー
- オフィス系ソフト
- 文字列を日付に変換
エクセル2003を使っています。 あるセルに'2009/6/19等が入っています。 頭に'が入っているため、日付とは認識せずに文字列として認識している為、困っています。 どうやれば、日付に変換できるでしょうか? 関数やVBAでも良いので、やり方を教えて頂けないでしょうか?
- ベストアンサー
- その他MS Office製品
- CSVでファイルを出す方法
excelにデータをVBAを使い書き出しています。例えば、 cells(行1、列1).Value=data1 cells(行1、列2).Value=data2 cells(行1、列3).Value=data3 cells(行2、列1).Value=data4 cells(行2、列2).Value=data5 ...... と1行書き込んだら次の行へ、次の行へといった具合に書き込んでいます。 excelなので直接セルを指定して書き込むことができていますが、excelの かわりにcsvとして書き込みをしたい場合、どのような処理をしてテキストに 出せばよいのでしょうか?
- ベストアンサー
- Visual Basic
- Excelで日付の書式を指定文字列に変換
Excelで日付の書式を指定文字列に変換 セルから日付情報を得て、文字列でyyyymmddに変換するには、どのようにすればいいでしょうか。VBA・関数のどちらでもかまいません。よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- Excel(csv) で入力した文字が日付になってしまいます。
Excel(csv)で住所を管理しています。 一つのセルに1-1-1のように入力をし、 次回そのファイルを開くと2001/1/1と表示され、 セルの書式設定の表示形式をみると日付になっています。 文字列にしてみても、36892というような 数字にしかならず、元の打ったデータがなんだったか わからなくなってしまいます。 なんとかこの現象を回避する方法はありますでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBAでセルデータの転記(文字列)
VBAでセルのデータを下記のように他のセルに持っていく場合、文字として入れてある数字(例えば先頭に0がつくようなもの)は、自動的に数値に変えられて0が消えてしまいます。 また、長いものは指数表示になってしまい、15桁を超えるものは後ろが0になってしまいます。 持っていく先のセルを文字列に設定しておけばいいのでしょうが、持っていく元データが全て文字列ではなく、数値の場合もあります。 元データが数値であれば数値として、文字列であれば文字列として持っていくにはどうすればいいのでしょうか? Sub test() Cells(3, 3).Value = Cells(1, 1).Value End Sub
- ベストアンサー
- オフィス系ソフト
- エクセル 文字列(数値)を日付データに変換
システムからCSVデータを抽出したのですが、日付データと時刻データが数値としてあります。これを日付、時刻データに変換したいのですが良い方法はありますでしょうか。 A1 20070601 → 2007/6/1 B1 1230 → 12:30 としたいのです。 データは1万件以上あるため、手入力で「/」を入れて いくわけにはいかず困っています。 またA1セルを「left関数」などで分割してから、 「&」で結合させても文字列として認識して うまくいきません。 何か良い方法がないかよろしくご教示を お願いします。
- ベストアンサー
- オフィス系ソフト
- ExcelでCSVを日付を読み込むと化ける
こんにちは。CSVファイルをExcelに読み込むと日付のところが文字化けをしてしまいます。 A1に2012/04/05 というデータを読み込むと、1905/7/4 とA1では表示されてしまいます。これはなぜこのような現象が起こるのでしょうか? セルの書式を「日付」にしても解消されません。
- ベストアンサー
- その他MS Office製品
お礼
zap35様、m_and_dmp様、MARU4812様 色々とご助言頂きありがとうございました。 できました。 結局、zap35様のご回答がきっかけとなり、以下のような処理を実行しました。 元CSVファイルをxls形式に読込むときに文字データとしてセルを.NumberFormatLocal = ”@”で 読込みます。(最初は元CSVファイルを直接開く方法で実施していました) その後、判定加工処理をして得られた結果を別なワークシートにやはり.NumberFormatLocal = ”@”を 利用して書き出します。 その後、ワークシートをCSV形式で出力保存させるというやり方です。 この方法で、住所の"1-2-3"や電話番号の"03-XXXX-XXXX"や日付を"2010-10-01 12:34:56"なども全て正常に処理できました。 ちなみに参考になったサイトです。 http://homepage2.nifty.com/e-ka/win32/index.htm とても参考になりました。ありがとうございます。 色々とお騒がせいたしました。 ありがとうございました。