使用VBA将文本文件导入excel时丢失数字数据

时间:2018-08-13 10:15:51

标签: excel vba

我正在尝试在VBA中创建一个宏,该宏可以导入文本文件并绘制给定数据的图形。我已经完成了导入,但是格式有所改变。文件有一个定界符:“,”(逗号),这是示例行:

1,1.201E-10,2.381E-8,0.005045,0.566

导入后,数据当然会放在单独的列中,但是由于数字中的点,因此数字不会读作数字。这是一件事:

当我手动执行此操作时,通过“搜索和选择”工具更改“”。改为“,”就可以很好地工作。

1   1,201E-10   2,381E-08   0,005045   0,566

但是,当我尝试自动执行此操作并使用“记录宏”工具记录宏并执行完全相同的操作时,会发生坏的事情。当我执行它时,数据丢失发生在带有“ E”值的地方。同一行数据如下所示:

1   1,201E-07   2,381E-05   0,005045   0,566

最后两个数字也位于其单元格的左侧,因为它们没有像数字值那样对待。

我试图通过几种不同的操作来破解它,但是当使用宏自动进行此更改时,没有任何效果。您是否认为导入本身可能存在问题?

这是我宏的完整代码(我是菜鸟,所以请原谅一些可能对您显而易见的缺点)

Sub import()


Fname = Application.GetOpenFilename

If Fname = False Then Exit Sub

Sheets("Arkusz2").Select
Columns("A:E").Select
Selection.ClearContents
Selection.ColumnWidth = 8.43


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




Columns("A:A").EntireColumn.AutoFit
Columns("B:B").EntireColumn.AutoFit
Columns("C:C").EntireColumn.AutoFit
Columns("D:D").EntireColumn.AutoFit
Columns("E:E").EntireColumn.AutoFit



ark = ActiveWorkbook.Name

Columns("A:E").Select
Selection.Copy
'Range("A1").Select
Windows("import danych.xlsm").Activate
Sheets("Arkusz2").Select
ActiveSheet.Paste



Range("A1").Select

Windows(ark).Activate
Application.CutCopyMode = False
ActiveWindow.Close savechanges = True
Windows("import danych.xlsm").Activate
Application.CutCopyMode = False
Range("A1").Select


Range("B4,B5,B6,B8,B10,B11,B12,B21:E100").Select
Range("B21").Activate
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

希望听到你们的一些解决方案。

1 个答案:

答案 0 :(得分:0)

尝试将DecimalSeparator:=".", ThousandsSeparator:=","添加到Workbooks.OpenText参数。 (或CSV文件中的任何内容)