0

以下のコードでは、ファイル ライターが数値を特定の小数点以下の桁数に丸めないようにするのに問題があります。値が文字列の場合と数値の場合があるため、バリアントを使用する必要があります。

変数が何であるかを正確に書き込むにはどうすればよいですか? たとえば、以下のコードは 0.00038 を表示する可能性があり、正確な値を表示したいと考えています。

Dim MyFile1 As Variant
Dim MyNumber as Variant

MyFile0 = "C:/myfile.csv"
fnum0 = FreeFile()
Open MyFile0 For Output As fnum0

MyNumber = 0.0003759656

Print #fnum0, MyNumber
4

3 に答える 3

1

あなたのコードは問題ありません。問題はエクセルです。VBA を使用するなど、Excel で CSV を開くと、Excel はセルが何であるかを判断します。通常、5 文字を超える数字のように見える場合は、指数表記で表すか、5 桁に丸めます。

以前にCSVファイルで何をしていたか、またはどこから取得したかを確認してください。ただし、Excelがデータを変更しないようにするためのオプションがいくつかあります。

VBA では Workbook.OpenText コマンドを使用して、次のいずれかで CSV を開きます。

-テキストとしてのすべての Excel セル*

- 小数点以下の桁数が非常に多い列に格納された数値 (最大小数点以下 30 桁が適用されることに注意してください)

- 特定の列をテキストとして保存します。

-- オプション構文の完全なリストはこちらhttp://msdn.microsoft.com/en-us/library/office/bb22351(v=office.12).aspx

CSV を Excel スプレッドシートにインポートすることもできます。これにより、各列のデータ型を選択するオプションが提供されます。次に、Excel ファイルに対して VBA を実行します。

Excel で定式化を行っていない場合は、数値をテキスト文字列として保存することをお勧めします。VBA は、必要に応じて数値の文字列を数値に自動的に変換します。

于 2013-04-16T11:13:14.687 に答える