2012-12-05 48 views
12

我使用 以下的此代碼打開以分號分隔的txt文件,並且在保存到excel後顯示長科目編號作爲科學記數法,而不管格式設置爲何種文本。如何將長數字從csv導入excel而不轉換爲VBA中的科學記數法

我在這裏做錯了什麼?

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 

記錄在txt文件看起來是這樣的: 2011-12-21; 100.00; 「21375000120000010020601764」

當我打開剛剛保存的文件,我看到2.117500012E + 25而不是數量。 這裏有什麼問題?

回答

3

在Excel中,數字被限制爲15個數字的精度。您的示例編號太大,Excel無法準確表示 - 這可能會解釋爲轉換爲科學記數法。

您應該將該列作爲文本導入到Excel中,而不是數字:那麼您將不會失去任何精度。

編輯:如果您步驟通過「打開從文」的過程錄製宏,你應該得到的東西是這樣的:

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 

有這一過程中的一步,它允許您選擇什麼類型的數據在每列中。

你的「字段信息」放慢參數是有點過了,我認爲:你應該有3列,但你COL2標記文本...

+0

這就是我想要做的,但如何?我想當我把格式設置爲fieldinfo中的文本時,它會執行它,但不會。 –

+0

謝謝,我錯誤地放置了fieldinfo中的列。現在工作。 –

24

我產品進口到一個Excel文件,條形碼會來了作爲科學記數法(如5.4265E + 12)

這意味着,當我轉換的文件轉換成csv文件上傳的細節,CSV是不正確讀取條碼,並將其更改爲52862300000等

打擊它:

  • 開放作爲一個Excel工作表(或轉換,如果你不能打開一個)
  • 突出(條碼/科學記數法)列
  • 走進數據/文本列
  • 第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. 右鍵單擊「可選粘貼」選擇文本並確定。

我不知道爲什麼,但它是爲我工作。

相關問題