我正在尝试用Excel打开.txt,将其复制到我的.xls文件,并使用一些vba函数处理它。事实上,它正在发挥作用。 主要问题是当数字左边有一些零时,Excel删除它们并且程序失败(因为事实上没有int,所以有一个字符串真的必须具有完全相同的字符)。
如何用零复制它们? 当我用Excel打开.txt时,它打开时没有零,所以我不能在那时格式化任何内容。
.txt是动态的,就像数字的字符数一样。 .txt内容的随机示例可以是: H 00013 SUPB4 00551 LEM 2252.554 00548 00540 00
主要代码是:
Workbooks.OpenText ThisWorkbook.Path & "\Text.txt", Origin:=xlWindows, StartRow:=1, FieldInfo:=Array(1, 1)
UltLinea = Range("A" & Rows.Count).End(xlUp).Row
Range("A1:Z" & UltLinea).Copy
Hoja1Text = ActiveWorkbook.Name
Workbooks(Hoja1GenDocs).Activate
Worksheets("Hoja1").Range("A1").PasteSpecial xlPasteAll
Application.CutCopyMode = False
Workbooks(Hoja1Text).Activate
ActiveWorkbook.Close Savechanges:=False
Range("A1").Select
我也尝试修改“普通”样式,将数字更改为@(文本),但是当打开新文件时,Excel会丢失此配置。
还有什么想法吗?感谢
答案 0 :(得分:0)
请勿使用.OpenText
打开文本文件。使用.QueryTable
导入文件。例如,如果您的文本文件看起来像这样
H 00013 SUPB4 00551 LEM 2252.554 00548 00540 00
然后我们这个
Option Explicit
Sub Sample()
Dim wb As Workbook
Dim ws As Worksheet
Dim fName As String
Set wb = Workbooks.Add
Set ws = wb.Sheets(1)
fName = ThisWorkbook.Path & "\Text.txt"
With ws.QueryTables.Add(Connection:= _
"TEXT;" & fName, Destination:=ws.Range("$A$1"))
.Name = "tempfile"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = True
.TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub