Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


943 / 13644 ツリー ←次へ | 前へ→

【77362】CSV出力について Masa 15/8/3(月) 15:26 質問[未読]
【77363】Re:CSV出力について ウッシ 15/8/3(月) 15:38 回答[未読]
【77364】Re:CSV出力について Masa 15/8/3(月) 15:58 質問[未読]
【77365】Re:CSV出力について ウッシ 15/8/3(月) 16:12 回答[未読]
【77366】Re:CSV出力について Masa 15/8/3(月) 18:39 お礼[未読]
【77367】Re:CSV出力について kanabun 15/8/3(月) 20:09 発言[未読]
【77368】Re:CSV出力について ウッシ 15/8/4(火) 8:04 回答[未読]
【77369】Re:CSV出力について Masa 15/8/5(水) 18:05 お礼[未読]

【77362】CSV出力について
質問  Masa  - 15/8/3(月) 15:26 -

引用なし
パスワード
   EXCEL VBAにてCSVファイルを出力します。
出力項目に数値(少数以下2桁)があり、””or 0の場合、
0.00で出力したいのですが、0となってしまいます。
何か方法はありますでしょうか。

宜しくお願い致します。

【77363】Re:CSV出力について
回答  ウッシ  - 15/8/3(月) 15:38 -

引用なし
パスワード
   こんにちは

どのようなコードですか?

シートをそのまま保存するなら、

Sub test()
  Sheets("Sheet1").Copy
  ActiveWorkbook.SaveAs Filename:="C:\temp\test.csv", _
    FileFormat:=xlCSV, CreateBackup:=False
  ActiveWorkbook.Save
  ActiveWindow.Close False
End Sub

これ位でも出来ますけおd。

【77364】Re:CSV出力について
質問  Masa  - 15/8/3(月) 15:58 -

引用なし
パスワード
   回答ありがとうございます。

一部省略していますが、下記のコードで作成しています。
-------------
  Dim Hidule  As String '日付
  Dim Tanka   As Double '納価

  Hidule = Format(Range("A1").Value, "yyyymmdd")
  Tanka = Range("A2").Value

  Write #FileNo, Hiduke, Tanka
--------------
A1:
 2015/08/01→"20150801"で出力したい ==> 問題なし
A2:
 100.00→100.00で出力したい ==> 100となってしまう
 0もしくは""→0.00で出力したい ==> 0となってしまう
 100.05→100.05で出力したい ==> 問題なし

小数部が0の場合に整数部だけで出力されてしまうため
何か方法はないかと悩んでいます。

良い方法はありますでしょうか。
宜しくお願い致します。

【77365】Re:CSV出力について
回答  ウッシ  - 15/8/3(月) 16:12 -

引用なし
パスワード
   こんにちは

必要な表示形式で一時シートを作成して、先の「test」のコードで
保存するのはダメでしょうか?

でなければ、100.00 も文字列として書き出すか。

Dim Tanka   As String '納価
Tanka = Range("A2").Text

【77366】Re:CSV出力について
お礼  Masa  - 15/8/3(月) 18:39 -

引用なし
パスワード
   回答頂きありがとうございます。

別シートに出力して行う方法は、出来ない事情があり
Writeしています。
Formatを使用してとも考えたのですが、文字型となって
しまうため、何か方法がないもかと質問を上げさせて
頂いた次第です。

やはり、数値のまま、0.00と出力するのは無理ですよね・・・。

【77367】Re:CSV出力について
発言  kanabun  - 15/8/3(月) 20:09 -

引用なし
パスワード
   ▼Masa さん:

>Formatを使用してとも考えたのですが、文字型となって
>しまうため、何か方法がないもかと質問を上げさせて
>頂いた次第です。
>
>やはり、数値のまま、0.00と出力するのは無理ですよね・・・。

でも、CSVはテキスト(文字列) ですよ

>  Dim Hiduke  As String '日付

これと同じように、
Formatかけて 文字列として保存すればいいだけだと思うのですが?

  Dim tanka As String
  Hiduke = Format$(Range("A1").Value, "yyyymmdd")
  Tanka = Format$(Val(Range("A2").Value), "#0.00")

  Write #1, Hiduke, Tanka

【77368】Re:CSV出力について
回答  ウッシ  - 15/8/4(火) 8:04 -

引用なし
パスワード
   こんにちは

文字列としてフォーマットしてWriteするとダブルクォーテーションで
囲まれてしまうのが問題なのかと思い、一時シートを作成してそのシート
をcsvファイルとして保存すればいいかと思ったのですが、一時シートを
作成する事にどんな支障があるのでしょうか?

こちらで確認したケースではシート上の「2015/08/01」「100.00」という
表示形式のデータを保存すると
2015/08/01
100.00
となりましたけどダメでしょうか?

【77369】Re:CSV出力について
お礼  Masa  - 15/8/5(水) 18:05 -

引用なし
パスワード
   ウッシさん、kanabunさんありがとうございます。

ダブルクォーテーションを取りたくて、質問をさせて頂きました。
アドバイス頂いた内容を参考に、仕様の変更を含め、担当者と話を
したいと思います。

アドバイスを頂きありがとうございました。

943 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free