Excel中具有多个空格的开放空间分隔文本文件

时间:2014-06-12 14:11:03

标签: excel text import

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

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

此致 最大

1 个答案:

答案 0 :(得分:0)

这是一种略有不同的方法:

  • 获取数据
  • 删除所有额外空格
  • 将所有数据放在 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