【问题标题】:Open space delimited textfile in Excel with multible spaces在 Excel 中打开带有多个空格的空格分隔文本文件
【发布时间】:2014-08-02 21:47:22
【问题描述】:

我正在尝试将空格分隔的文本文件导入 Excel,但问题是它只有一个未知数量的空格。我现在想知道是否有人可以在导入之前或之后帮助我快速删除所有空单元格?它大约有 1000000 行和一百列,包括所有空的列。这是我目前的代码。

currentFile = ActiveWorkbook.Name
fileToOpen = Application.GetOpenFilename("PRN Files (*.prn), *.prn")
If fileToOpen <> False Then
 Sheets("Rawdata").Cells.ClearContents ' clear raw_data worksheet
 Workbooks.OpenText Filename:=fileToOpen, DataType:=xlDelimited, Space:=True
 openedFile = ActiveWorkbook.Name
 Workbooks(openedFile).ActiveSheet.UsedRange.Copy Destination:=Workbooks(currentFile).Worksheets("Rawdata").Range("A1")
Workbooks(openedFile).Close
Else
 MsgBox "No data imported"
End If

真诚地, 最大

【问题讨论】:

    标签: excel text import


    【解决方案1】:

    这里有一个稍微不同的方法:

    • 获取数据
    • 删除所有多余的空格
    • 将所有数据放入A列
    • 将数据解析为多列

    代码如下:

    Sub OpenPrnFile()
        Dim sh As Worksheet, filetoOpen As String
        Dim i As Long, s As String, wf As WorksheetFunction
        Set wf = Application.WorksheetFunction
        Set sh = Sheets("Sheet1")
        filetoOpen = Application.GetOpenFilename("PRN Files (*.prn), *.prn")
        If filetoOpen = "" Then Exit Sub
    
        Close #1
        Open filetoOpen For Input As #1
        sh.Select
        i = 1
        Do Until EOF(1)
            Line Input #1, s
            Cells(i, 1) = wf.Trim(s)
            i = i + 1
        Loop
        Close #1
    
        For j = 1 To i
            ary = Split(Cells(j, 1), " ")
            For k = LBound(ary) To UBound(ary)
                Cells(j, k + 1).Value = ary(k)
            Next k
        Next j
    End Sub
    

    【讨论】:

    • 非常感谢它完美运行。唯一的问题是这是一个相当缓慢的过程。在速度非常快的 PC 上加载一个普通文件需要 25 秒。有没有办法提高速度。我试过 Application.ScreenUpdating = False 但没有多大帮助。
    猜你喜欢
    • 2014-11-03
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多