我正在尝试在 VBA 中制作一个宏,它导入文本文件并制作给定数据的图表。我已经完成了导入,但有一些改变格式的事情。文件有一个分隔符:“,”(逗号),这是一个示例行:
1,1.201E-10,2.381E-8,0.005045,0.566
导入后数据当然在单独的列中,但数字不会被读取为数字,因为它们中有点。这是一件事:
当我手动执行时,通过搜索和选择工具,更改“。” 到“,”它工作得很好。
1 1,201E-10 2,381E-08 0,005045 0,566
但是,当我尝试将其自动化并通过工具 Record Macro 录制宏并执行完全相同的一组操作时,会发生不好的事情。当我执行它时,数据丢失发生在带有“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
希望听到你们的一些解决方案。
尝试添加DecimalSeparator:=".", ThousandsSeparator:=","
到您的 Workbooks.OpenText 参数。(或CSV
文件中的任何内容)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句