2012-12-05 9 views
12

以下のコードでセミコロン区切りのtxtファイルを開きます。 と長い口座番号が、 。VBAの科学記法に変換せずにCSVから長い番号をインポートする方法

私はここで何が間違っていましたか? txtファイル内

Application.ScreenUpdating = False 
    Workbooks.OpenText fileName:=Filetxt, Origin:=xlWindows, StartRow _ 
    :=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ 
    ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, _ 
    Space:=False, Other:=False, Local:=True, _ 
    FieldInfo:=Array(Array(1, 4), Array(2, xlTextFormat) 
    'Save text file as csv file 
    Set wb = ActiveWorkbook 
    Application.DisplayAlerts = False 
    wb.SaveAs fileName:=fileXls, FileFormat:=6, _ 
    ReadOnlyRecommended:=False, _ 
    CreateBackup:=False 
    Application.DisplayAlerts = True 
    wb.Close savechanges:=True 

録音は、次のようになります; 100,00; 2011-12-21 "21375000120000010020601764"

そして、私は新しく保存されたファイルを開いたとき、私は2.117500012E + 25の代わりに、その数を見ます。 ここに何が間違っていますか?

答えて

3

Excelでは、数字は15桁の精度に制限されています。あなたのサンプル番号は、Excelが正確に表現するには大きすぎます - それは科学的表記法への変換を説明するかもしれません。

数値を入力するのではなく、その列をテキストとしてExcelにインポートする必要があります。精度を失うことはありません。

EDIT:マクロの記録中に「オープンテキストから、」プロセスをステップ場合は、このような何かを得る必要があります。

Workbooks.OpenText Filename:= Filetxt, Origin:=xlWindows, _ 
     StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ 
     ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _ 
     , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 5), Array(2, 1), _ 
     Array(3, 2)), TrailingMinusNumbers:=True 

をあなたはどのようなタイプのを選択することができ、そのプロセスのステップがありますデータは各列にあります。

あなた「のFieldInfo」PARAMTERはオフビットである私は思う:私はExcelファイルに製品を輸入され、バーコードが来るあなたは3列を持つ必要がありますが、あなたはテキストとしてCOL2をタグ付けしました...

+0

私は何をしたいのですか? fieldinfoにテキストとして書式を書いたときには、それはやりますが、いいとは思いませんでした。 –

+0

ありがとうman、shoot私はfieldinfoの列を間違って配置しました。今すぐ働きます。 –

24

科学的表記法としてアップ(例えば5.4265E + 12)

私は、CSVファイルが正常にバーコードを読み取り、など528.623億

にそれらを変更していなかった細部をアップロードするcsvファイルにファイルを変換したときにこれが意味するもの

戦闘:

  • Excelシートとして開く(またはあなたが開くことができない場合は1として変換)
  • は(バーコード/科学表記)を強調表示する列
  • ゴー列
  • ページ1へのデータ/テキストに:チェック]区切られた」/次
  • ページ2:チェック]タブ 'と変化する 'テキスト修飾子を'/」に次
  • ページ3:チェック '一般' ではなく 'テキスト'
  • 完了

これは長い番号として表示するためにそれらをすべて変換する必要があります。その後、CSVファイルとして保存することができ、番号は科学的な数字に変換/フォーマットされません。

これが役立ちますように!

+1

なぜこれはまだ受け入れられていないのですか? – Kristopher

+0

同様に、列 - >ホームタブ - >番号サブタブ - >変更ドロップダウンメニュー "一般"から "テキスト" – alexey

+0

あなたは素晴らしいです! – FisherCoder

1

私のシステムはmac os X EI Capitanです。htmlテーブルからExcelにデータをコピーすると、「セルフォーマット」をテキストに変更すると、数字は常に1.10101E + 17などに自動変換されます。

私の決意は、次のとおりです。

  1. のMac OSソフトウェア「番号」を開き、新しいタブ]タブへ
  2. コピーデータを作成し、あなたが
  3. オープンMicrosoft Excelの変更番号の列に正しい番号が表示されます "セルフォーマット "からテキストへ
  4. 数字タブからデータをコピーします。
  5. [オプションの貼り付け]を右クリックし、[テキストとOK]を選択します。

私は理由はわかりませんが、それは私の仕事です。

関連する問題