使用vba打开文本时,excel左键为零

时间:2013-12-16 19:35:32

标签: excel vba excel-vba

我正在尝试用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会丢失此配置。

还有什么想法吗?感谢

1 个答案:

答案 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