• 締切済み

CSVファイルをExcelで読み込むと

CSVファイル中の項目 "01-03"などが、Excelでは 勝手に 1月3日などに変換されてしまいます。 もちろん、拡張子を.txtに書き換えて、毎回フィールドを 文字列属性にして読み込んでやればいいのでしょうが、 なにぶん量が多いので、毎回毎回こんな操作をするのは めんどくさいのです。 CSVファイルのままで、項目を勝手に変換させないで読み込む方法はありませんか??

みんなの回答

  • magudon
  • ベストアンサー率57% (4/7)
回答No.6

>どこかで、「""で囲むと、文字列として読み込む」と >いう設定ができるのでしょうか??? "'03-09" などと、'の文字を入れると文字列として読んでくれます。

  • magudon
  • ベストアンサー率57% (4/7)
回答No.5

実は、私も同じことでどうしようかと考え、VBAで 解決しました。 まず、csvファイルと同じ内容のxlsファイルを 作成し、セルの書式設定で自分の好きな形にします。 そして下記のマクロを実行すればよいはずです。 下記のtestというところを適当に書き換えてください。 Sub test() ' このファイルを、CSV形式で、このファイルと同じディレクトリに保存 Dim CurrentName As String CurrentName = ThisWorkbook.Name ThisWorkbook.Sheets("test").SaveAs _ Filename:=ThisWorkbook.Path & "\licindb.csv", FileFormat:=xlCSV Application.DisplayAlerts = False '確認せずに上書き保存 ThisWorkbook.SaveAs Filename:=CurrentName, FileFormat:=xlNormal Application.DisplayAlerts = True End Sub

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.4

やっぱりややこしい気がするんですが、 1:WORDなどで該当のCSVファイルを読み込み、以下の方法ですべて置換する   検索する文字:([0-9][0-9]-[0-9][0-9])   置換後の文字:$$\1   オプション:ワイルドカードを使用する  ※01-01 → $$01-01 ってな感じで置換します。 2:同名で保存し、EXCELで同CSVを読み込む 3:EXCEL上で置換(すべて)   検索する文字:$$   置換後の文字:' (←半角シングルクォーテーション) と操作すると、ちゃんと読み込みできます。

nonoz
質問者

お礼

うーん。 それだと .txtに書き換えて..... と大差ない手間のように思えてしまいます。 Excelで素直に読み込む方法はないんでしょうか? 「ある」か「ない」かで、考え方が違ってきます。 私はマイクロソフト製品には詳しくないので、 もし知らないだけで、素直に読み込む方法が 存在するならば、「できないから迂回方法を考える」 ということは無駄です。逆に存在しないならば、 Excelを使わない方法を考えるなりの根本的に 違うことを考えなけりゃなりません。 CSVファイルくらいは勝手な変更せずに そのまんま読み込んで欲しいと思うのですが。 あ、アドバイスには感謝してます。 ありがとうございます。

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.3

失礼しました、質問をしっかり把握してなかったです。 でも、テキストエディタ等で目的の位置を探して何らかの処理をするほうが面倒な気がするんですが・・・ あとは更に面倒でしょうけど、VBAを使って直接フィルを読みこむような仕組みを作るとか。

nonoz
質問者

お礼

いやいや、私にとっては、Excelを使うよりも、 perlでスクリプトを書くほうが遙かに楽ですから。 でも作業者向けに Excelにしないといけないって 場面もでてくるので、Excelで読み込みなのです。 VBAは書いたことないのですが、 (C++は好きだけど、BASIC系は嫌い) それで読み込むような仕組みを作ることは 可能なのですか?? ならばそっちのほうがいいです。 嫌いだなんて言っている場合ではないです。 ナミダをのんでVBAに取り組みますわ。

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.2

 余り賢い方法ではないのですが、 01-03の様なデータを、" 01-03"の様に ダブルコーテーションでくくって、文字列の最初か 最後にスペースを入れれば、Excel君は、文字列だと把握 してくれます。

nonoz
質問者

お礼

おぉ!スペースを入れるとは!! 思いつきませんでした。それは。 でも、そうすると、今度はいろいろなところで、 空白を削除する処理をせねばならなくなる... まぁ、人間は思いっきり楽になりますね。 一度プログラム(スクリプトとか含む)組んでしまえば。 次善の策として考慮させてもらいます。 ありがとうございました。

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.1

CSVファイルのうちにそのフィールドを " " で囲むという手があります。ま、あまり現実的じゃないですけど。 CSVファイルを開くときどのように開いていますか?先にExcelを起動したあとにファイルメニューの開くから開くとウィザードが起動するんですが、拡張子CSVがExcelに関連付けされていると勝手に開いちゃいますので、拡張子をTXTなどに変えてから開いてみてください。 ウィザードでは列ごとにデータの内容を指定できますので、日付っぽいデータなんだけど全然別ってことなら文字列として読み込ませればそのままのデータが保存されます。

nonoz
質問者

お礼

回答ありがとうございます。 しかし、私が聞きたかったのは、ファイル名を「xxxx.txt」に書き換えて、ウィザードで文字列属性に指定して、、、、というやり方がめんどくさいので、なんとかなりませんでしょうか???という趣旨なのです。「なんとか手抜きができるようになりませんか?」という都合のいい質問なのです。 ちなみに、Excel97では、フィールドを ""で囲んでやっても、"03-05"は、「3月5日」に変換されてしまいます。 どこかで、「""で囲むと、文字列として読み込む」という設定ができるのでしょうか??? すみません、基本的に Windowsを含むマイクロソフト製品には、ど素人です。

関連するQ&A