過去の桐井戸端BBS (桐ver.9)
22313 CSVファイルからTXTファイルに変換できますか? katsuyoshi 2003/09/12-09:56
たびたびお世話になります。

桐で作成したデータをCSVに書き出し、EXCELに読み込むと
先頭0の文字列が数値になって読み込まれます。
  001111→1111
これを回避する方法を教えて下さい。
とりあえず自分なりに
CSV書き出しの後にTXTに変更し、読み込むときにEXCEL側で
設定することを考えましたが他に良い方法があったら教えて下さい。
また処理はイベントで行いたいと思いますのでそれも併せてお願いします。

22318 Re:CSVファイルからTXTファイルに変換できますか? 佐田 守弘 2003/09/12-13:15
記事番号22313へのコメント
katsuyoshiさん
タイトルが「CSVファイルからTXTファイルに変換できますか?」と
書かれていますが、テキストファイルで書き出しても、結果は同じでしょうね。
そもそもCSVファイルはテキストファイルの一種です。

「001111」の様な数字文字列をテキスト形式のファイルから読み込んだ場合、
Excel側ではこれを数値として認識するのは、Excel側の仕様です。

Excelに数字文字列を数値ではなく、数字文字列として扱わせるには、
その数字文字列の前後を二重引用符で括って記述し、文字列である事を名に表示しなければなりません。

この様に文字列値には二重引用符を付け、数値には引用符を付けずに書き出し、
文字列と数値を名に区分するテキスト形式がK3形式です。

元のデータが数値ではなく文字列になっているのであれば、K3フォーマットに書き出して、
これをExcelで読み込んで下さい。

佐田守弘(KS-00119)

K3フォーマットとは
この様な数字文字列と数値を明確に区別するためにK3が提唱しているデータフォーマット式です。
22320 Re:CSVファイルからTXTファイルに変換できますか? katsuyoshi 2003/09/12-16:57
記事番号22318へのコメント
佐田 守弘さんいつもお世話になっております。
>
>Excelに数字文字列を数値ではなく、数字文字列として扱わせるには、その
>数字文字列の前後を二重引用符で括って記述し、文字列である事を名に表示
>しなければなりません。
>
>この様に文字列値には二重引用符を付け、数値には引用符を付けずに書き出し、
>文字列と数値を名に区分するテキスト形式がK3形式です。
>
>元のデータが数値ではなく文字列になっているのであれば、K3フォーマット
>に書き出して、これをExcelで読み込んで下さい。


今までk3フォーマットは使ったことがありませんでした。
これから書き出してみたいと思います。
ありがとうございました。
22325 Re:CSVファイルからTXTファイルに変換できますか? hidetake 2003/09/12-17:20
記事番号22320へのコメント
>>Excelに数字文字列を数値ではなく、数字文字列として扱わせるには、その
>>数字文字列の前後を二重引用符で括って記述し、文字列である事を名に表示
>>しなければなりません。
>>この様に文字列値には二重引用符を付け、数値には引用符を付けずに書き出し、
>>文字列と数値を名に区分するテキスト形式がK3形式です。
>>元のデータが数値ではなく文字列になっているのであれば、K3フォーマット
>>に書き出して、これをExcelで読み込んで下さい。

別に Excel はデフォルトで "" で括ってあるからと言って
文字列としては処理してくれませんよん!

型を明示的に持っていないテキストファイル(CSV,K3を含む)で,
文字列を文字列として処理したい場合は Excel に明示的に文字列だよん!と指示する必要があります。

それは,会話式でやるのか,あるいは下記の方法の2番目の方法を使うとか・・・

桐v2やv5のデータをExcelへ変換したい
http://www.fuku3.com/~habata/kbbs/kakov5/17572.htm

> 2つ目の方法
> (ファイルを CSVファイルとして Excel で読み込む)
> (但し," で囲まれたデータは文字列として扱う!)
>
> ==== csv2xls2.vbs ==================================
> 使用方法: csv2xls2.vbs "x:\path\txt.txt" "x:\path\excel.xls"
> ---------------------------------------------------
(以下省略)

22326 確かに 佐田 守弘 2003/09/12-18:37
記事番号22325へのコメント
hidetakeさんの指摘通り、K3ファイルを読み込ませても、二重引用符が無視されますね。

手作業で行う場合の方法として、ちょっと面倒ではありますが、次の様に固定長ファイルに
書き出す方法も考えられます。

1)桐のメニューから[ファイル変換]を選び、「列の幅が固定長のテキストファイル」を選んで書き出す。
2)Excelを起動して、[開く]メニューで上記のファイルを開く。
データのファイル形式に「スペースによって、右または左に揃えられた固定長フィールドのデータ」を選ぶ。

この操作を行うと、各フィールドの区切り位置を指定するダイアログが表示され、同時にフィールド毎にデータの形式の指定ができます。

佐田守弘(KS-00119)

22328 Re:確かに hidetake 2003/09/12-20:04
記事番号22326へのコメント
>この操作を行うと、各フィールドの区切り位置を指定するダイアログが表示され、同時にフィールド
>毎にデータの形式の指定ができます。

これも前に書いたコメントツリーの中に含まれる内容ですが
>桐v2やv5のデータをExcelへ変換したい
>http://www.fuku3.com/~habata/kbbs/kakov5/17572.htm

Excel で CVS を扱うにはそれなりの特徴があります。
先の引用にも含まれますが下記も参考にして覚えておいた方が為になります。

CSVファイルを高速に読み込む
( Excel2000、Excel97 )
http://www2.moug.net/cgi-bin/technic.cgi?exopr+TI06010017


22329 Re:確かに hidetake 2003/09/12-20:32
記事番号22328へのコメント
あと,csv2xls2.vbs に関してはサンプルなので自分で改造すると
いろんな使い方ができると思います。

例えば xl.Visible = Fales を Ture にして book.Close True
と xl.Quit をなくし,CSV の関連付けをこの VBS にしてあげれば
CSV のダブルクリックで " " で囲まれたデータに関しては文字列
として自動的に扱うような Excel で CSV ファイルの開き方もできるようになるでしょう・・・
多少,ファイルを開く時の引数の処理も弄る必要もありますが!

VBS(WSH) なので少し勉強すればいろいろ工夫もできると思います。

22333 Re:CSVファイルからTXTファイルに変換できますか? Yada 2003/09/13-09:48
記事番号22313へのコメント
katsuyoshi さんはじめまして
私もよくこの掲示板を参考にさせていただいております。

エクセルへの変換では、以前、同じ問題で悩んだことがあり、
NIFTY のエクセル関連のフォーラムでこのやり方を見つけました。
(場所はたぶん、FMSOFFC)

エクセルで読み込みを行う際、勝手に数値に変換させないためには、

="0001",="0002",="0003",

の様に、CSV を作成する際、二重引用符で括った上で
先頭に = を付け加えるとエクセルは、これを計算式と判断し、
表示を 0001 0002 0003 としてくれます。
純粋に文字列として読み込んでいるわけではないのですが、
問題があれば、エクセル上で計算式をだけを削除すればいいと思います。

また、イベントで処理されるなら、別途書き出し用の項目を
作る必要もなく、= と二重引用符を加えながら印字コマンドで
書き出しを行えばスムーズに行くと思います。

戻る