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

ワークシートの一部をカンマ区切りのテキストとして出力しようとしています。ワークシートには文字列と数値が混在しています。文字列は"文字列"としてする必要があります。数値はそのまま出力します。
ワークシート上で文字列あらかじめ""を付加しておくと、CSV保存の際に、""文字列""となるので、CSV形式は断念しました。

そこでVBAでWRITEを使い、

Dim i, j As Integer
i = 2
j = 1
For i = 2 To 5
Write #1, Worksheets("diff").Cells(i, j).Value, Worksheets("diff").Cells(i, j + 1).Value, Worksheets("diff").Cells(i, j + 2).Value,
Next i
Close #1

といった感じで挑戦しています。ところが、セルの値が1より小さい数値、つまり0から始まる場合には、始めの0が消えてしまいます。
 セルの値 0.****
 出力された値 .****
「それが仕様だよ」と言う場合には、何か良い方法を教えていただけると幸いです。

A 回答 (2件)

#1です。


Write は自動的にカンマ区切りにしてくれますが、すべて " で囲まれちゃうんですよね。
なので Write の代わりに Print を使ってみてください。
ただし、" で囲まれない代わりにカンマ区切りにはなりません。
Print #1, """ & 文字 & """ ; "," ; 数字
って感じで、自前で区切りを入れます。
頑張ってくださいヽ(^。^)ノ
    • good
    • 0
この回答へのお礼

そこに至るまでのプロセスをだいぶ変更しましたが、PRINTを使うことで、最終的には解決しました。

WRITEは文字列でしか出せないんですね。0から始まる文字列は0をはずしてしますのがEXCELの仕様なんでしょうね。

PRINTを使うと、不要なスペースが入ってしまうのが難点ですね。

ずいぶん助かりました。ありがとうございました。

お礼日時:2004/04/28 14:22

Format(セルの値, "0.0")


でどうでしょうか。
頑張ってくださいヽ(^。^)ノ

この回答への補足

ちょっと試してみたら、うまく行きそうです。詳しく試してから、ご報告します。p(^o^)q

補足日時:2004/04/27 14:26
    • good
    • 0
この回答へのお礼

一度はうまく行ったように感じたのですが、"0.****"となることがわかりました。数値が""で囲まれるのは都合が悪く、別の方法を模索中です。また、数値は小数点以下が3桁の場合と、1桁の場合があるので、そのことも加味する必要がありました。1桁になるか3桁になるかはケースによって異なります。

いったんCSVで吐き出しておいて、そのCSVファイルをテキストエディタによる一括置換(""文字列""を"文字列"に)のような処理をEXCEL上からできればいいのかもしれないですね。その方向でも探ってみます。

まずはお礼まで。ありがとうございました。

お礼日時:2004/04/27 15:27

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