アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルにCSVファイルから読み取りをするVBAで下記のように記述しています。

Sub CSV読取り

Dim FName As Variant
FName = Application.GetOpenFilename(FileFilter:="CSVファイル (*.csv), *.csv")
Open FName For Input As #1

For i = 1 To 400
Input #1, Columni
ThisWorkbook.Sheets("CSV取得").Cells(i, "E").Value = Columni
Next i
Close #1

End Sub

これでほとんどのデータ(数値や文字列の400件)をうまく読み取るのですが、どういう訳かデータが小数点以下第三位まである数値の場合、エクセルに取り込まれた段階で小数点以下第二位までに四捨五入されてしまうようです。
そのうえ、エクセルのセルの表示形式がそこだけ通貨(¥マーク付き)になっています。
なぜでしょうか?
またどうしたら正しく小数3位まで読み取れるのでしょうか?

CSVファイルをエクセル単純にエクセルで開けばちゃんと小数三位まであるのですが、データが横一列にカンマ区切り400件あるので256列しかないエクセルではすべてとりこめません。(だから上記のマクロで縦に変換してとりこんでいるのですが)

非常に困っています。

A 回答 (4件)

こんにちは



原因究明には至っておりませんが・・・
Dim Columni As Double
を追加してはいかがでしょうか?

私も実際試しましたが、AQUALINEのおっしゃるとおりの結果になりました。
不思議ですねぇ。

この回答への補足

早速ありがとうございました。
ためしたところ小数点については解決しました。
しかし今度は空白データおよび半角1文字だけのデータ「E」がすべて「0」に置き換わってしまいました。

補足日時:2003/09/11 17:22
    • good
    • 0

追記です。



csvファイルがすべて数値だと思っていたもので・・・
Dim Columni As String
で回避することは出来ると思うのですが、さんが求めているものはもっと高いレベルのような気がしてきました。
すみませんでした。。。

この回答への補足

> csvファイルがすべて数値だと思っていたもので・・・

文字(全角および半角英字)と整数と小数です。

Dim Columni As String で十分問題は解決しました。

小数も正しく表示されましたし、空白がゼロにかわったり。文字が消えることも今のところ有りませんでした。

これでいいと思うのですが、何か問題が起きる可能性があるのでしょうか?
昨日からやっていますがまだ問題はおきていません。
ご教示いただけると幸いです。

補足日時:2003/09/12 15:02
    • good
    • 0

AQUALINEさんのお名前が抜けてしまいました。


失礼しました。
    • good
    • 0

こんばんは



Stringは一応、文字列、数値とも対応できるので大丈夫だと思います。
お役に立てて幸いです。
    • good
    • 0
この回答へのお礼

ありがとうございました。
お礼が遅くなり申し訳有りませんでした。
本当に助かりました。

お礼日時:2003/09/19 11:28

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