- ベストアンサー
CSV出力して、MS/EXCELで開くとカンマ区切りがされてない
こんにちわ。 業務で、WEBレポーティングツールをいじっております。(特定のレポートを社内以外の人にブラウザで閲覧できるツール) サーバーでDBよりデータ参照、レポート作成等の処理をしてクライアントにHTMLレポートを出力するという構造です。そのソフトにはサーバーでレポート閲覧やエラーなどの監査ログを残す機能があり、CSVファイルで出力されるのですが、ちょっと表示がおかしいのです。 そのCSVファイルをテキスト形式で開くと正しく表示されるのですが、MS/EXCEL2000で開くとカンマで区切られておらず、一行のデータが一つのセルにはいってしまいます。 具体的に言うと A1セルに、「ABC,2000/01/08,あいうえお」 A2セルに、「DEF,2000/01/09,かきくけこ」 ・・・・ なぜこういう現象が起きるのか検討しているのですが、文字コードが異なっているか、些細なゴミのようなものが混入されているか不明です。 ソフト会社に人に質問をしても、未だ回答がこないです。ただ、仕様によると吐き出すCSVファイルは、「unicodeでエンコーディングされている」ということはわかりました。 また、MS/ACCESS2000でそのCSVファイルをインポートすると、日付&数値の項目は、インポートエラーとなり読み込みできません。(文字は問題無し) そのソフトは、米で販売されてた物を日本語仕様に直して販売しています。 上記の状況なのですが、どのように原因を推測されますでしょうか? よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
基本的なことですが、拡張子は.csvに成ってるのでしょうか? それから、「MS/EXCEL2000で開く」とは、どのように開いているのでしょうか? ・Excelのメニューから開く ・エクスプローラーからDrug&Drop ・ファイルをダブルクリック ・エクスプローラーから「アプリケーションから開く」 等など これに、よっても多少動きが違うような気もします。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
カンマを認識しないと言う点に、的を絞ってはどうですか。 (1)問題のCSVファイルを16進表示できる、Editorをお持ちならそれで「2c」(=Jisコード44)があるか調べる。ついでに「0d0a」(行の終わり)もあるか調べる。 (2)無ければエクセルをお持ちであると仮定して ワークシートでALT+F11でVBE画面になり ALT+I(挿入)、ALT+M(標準モジュール)で、標準モジュールの画面になるから、下記を貼り付ける。そしてコードの中へポインタを置いて、F5(実行)キーを押す。fnのCSVファイル名は適宜変更のこと。 flは表示文字数ですが適当に増減可。 下記はMsgboxで表示していますが,Worksheets("sheet1").Cells(x, 1) = sと x = x + 1の前の ’を消し、Msgboxの前に’を入れると、エクセルの表に出ます。 そこで「44」(カンマ)「1310」(改行復帰。横行の終わり)を確認してください。-xxxxxと出るのは漢字分です。 数字は48(0)から、また英字は97(a)からの連番です(JISコード)。 Sub test01() fn = "c:\My Documents\aab.csv" Open fn For Input As #1 ll = FileLen(fn) fl = 10 rl = 0 For j = 1 To 1000 If ll < fl Then GoTo end1 a = Input(fl, #1) ll = ll - fl s = "" For i = 1 To fl b = Mid(a, i, 1) s = s & Asc(b) Next i MsgBox s ' Worksheets("sheet1").Cells(x, 1) = s ' x = x + 1 Next j end1: Close #1 End Sub ファイルの最後が上手く終わらないですが、よろしく。
お礼
回答ありがとうございます。 忙しくてVBAの方は試しておりませんが、 バイナリエディターで監査ログファイルを開いてみました。 突然、ちょっと話は反れますが・・・・ 私のOSはWIN95で、そのメモ帳で開いたところ文字と文字の間に スペースが挟んで表示されてました。 具体的に言いますと "31/11/2000,/ReportViewing,9844383" と言うログ表示が " 3 1 / 1 1 / 2 0 0 0 , / R e p o r t V i e w i n g , 9 8 4 4 3 8 3 " のようになってました。 ただし、Win NT4.0&Win2000でのメモ帳、Win95での秀丸では、スペースなし表記でした。 そして、話は戻って肝心のバイナリエディターで開いたところ、 すべてスペース(コードは00)が挟まれてある表記でありました。 おっしゃられたカンマコード(2C)は確かにありました。 が、改行コード(0d0a)は「0d 00 0a 00」のようにスペース(00)が 挿入されておりました。 スペースコード(00)を削除していけばなんとか、エクセルでの表記は 正しく行なわれたようです。(膨大なデータですのですべて確認できておりません) もう少し、突っ込んで追求はしてみたいのですが、質問に対する回答で解決しましたのでこの質問は締め切らせて頂きます。 一応、この事実をソフト会社に投げて見ます。 いい知恵を拝借できたimogasiさんには大変感謝しております。 ありがとうございました。
- 0011Allen
- ベストアンサー率56% (108/192)
全く的はずれかも知れないのですが・・・。 CSVファイルをワードパッドとかのテキストエディタで開いてカンマをカンマで検索/置換してみたらどうでしょうか。 同じもので検索/置換ってバカ見たいなんですけど・・。 ずーと以前、なんのアプリだったか覚えてないのですが、英語と日本語のバージョンで互換があるはずだったものが、カンマとアポストロフィーが(見た目は全く同じなのに)認識されなくなった事がありました。 その時、同じもので検索/置換して、取り合えず使えるようになりました。 その当時はコードの違うものが入ってたんだと勝手に思ってましたが、きちんと理由まで探らなかったので、今だに何故かは不明ですが・・(^_^;)
お礼
回答ありがとうございます。 0011Allenさんの言われるとおりやったのですがだめでした。 違う原因でしょうね。
お礼
回答ありがとうございます。 上記に掲げた方法を試しましたところ、「Excelのメニューから開く」→カンマの区切り文字を指定すれば正しく表記することがわかりました。 多少面倒ですが、一番簡易な方法でした。 ryoukunさんありがとうございました。