【问题标题】:How to read multiple Textfiles into separate sheets in current workbook?如何将多个文本文件读入当前工作簿中的单独工作表?
【发布时间】:2018-12-20 09:35:18
【问题描述】:

我正在尝试使用按钮打开一个文件夹,选择文本文件并将文件读入我当前的工作簿。

我的工作簿有工作表。每个文件的工作表应该添加到我的工作表的末尾。

我找到了一个按我想要的方式读取的代码,但它会打开一个新的工作簿。

Sub fileop()
    Dim xFilesToOpen As Variant
    Dim i As Integer

    Dim xWb As Workbook
    Dim xTempWb As Workbook
    Dim xDelimiter As String

    Dim xScreen As Boolean
    On Error GoTo ErrHandler
    xScreen = Application.ScreenUpdating
    Application.ScreenUpdating = False
    xDelimiter = "|"
    xFilesToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt", , "Error", , True)

    If TypeName(xFilesToOpen) = "Boolean" Then
        MsgBox "No files were selected", , "Error"
        GoTo ExitHandler
    End If

    i = 1
    Set xTempWb = Workbooks.Open(xFilesToOpen(i))
    xTempWb.Sheets(1).Copy
    Set xWb = Application.ActiveWorkbook
    xTempWb.Close False
    xWb.Worksheets(i).Columns("A:A").TextToColumns _
    Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, _
    Tab:=False, Semicolon:=False, _
    Comma:=False, Space:=False, _
    Other:=True, OtherChar:="|"

    Do While i < UBound(xFilesToOpen)
        i = i + 1
        Set xTempWb = Workbooks.Open(xFilesToOpen(i))
        With xWb
            xTempWb.Sheets(1).Move after:=.Sheets(.Sheets.Count)
            .Worksheets(i).Columns("A:A").TextToColumns _
              Destination:=Range("A1"), DataType:=xlDelimited, _
              TextQualifier:=xlDoubleQuote, _
              ConsecutiveDelimiter:=False, _
              Tab:=False, Semicolon:=False, _
              Comma:=False, Space:=False, _
              Other:=True, OtherChar:=xDelimiter
        End With
    Loop

ExitHandler:
    Application.ScreenUpdating = xScreen
    Set xWb = Nothing
    Set xTempWb = Nothing
    Exit Sub
ErrHandler:
    MsgBox Err.Description, , "Error"
    Resume ExitHandler

End Sub

【问题讨论】:

  • 问题看起来好像是xTempWbxWb 指的是同一个工作簿。当您打开工作簿时,它将成为活动工作簿。
  • 加上你复制但从不实际粘贴。
  • 你认为有一种更简单的方法可以打开文件夹,读取我选择的所有文件并将它们放入我当前的项目中直到最后一张吗?

标签: excel vba


【解决方案1】:

给你。

Sub TxtImporter()
Dim f As String, flPath As String
Dim i As Long, j As Long
Dim ws As Worksheet
Application.DisplayAlerts = False
Application.ScreenUpdating = False
flPath = ThisWorkbook.Path & Application.PathSeparator
i = ThisWorkbook.Worksheets.Count
j = Application.Workbooks.Count
f = Dir(flPath & "*.txt")
Do Until f = ""
    Workbooks.OpenText flPath & f, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True, _
        Space:=False, Other:=False, TrailingMinusNumbers:=True
    Workbooks(j + 1).Worksheets(1).Copy After:=ThisWorkbook.Worksheets(i)
    ThisWorkbook.Worksheets(i + 1).Name = Left(f, Len(f) - 4)
    Workbooks(j + 1).Close SaveChanges:=False
    i = i + 1
    f = Dir
Loop
Application.DisplayAlerts = True
End Sub

【讨论】:

  • 感谢您的回复。可悲的是,这不是我想要的。我想在 excel 中按下一个按钮(应该打开一个文件夹),然后选择我想要的尽可能多的 texfiles。之后,文本文件应放置在同一个 Excel 工作簿中,但始终位于工作表的最后一个位置(每个文本文件都有一个新工作表)
【解决方案2】:

您打开一个新的工作簿来插入文件。 您只需要打开一个文本文件并将其插入到最后一个单元格。

您将在此处找到确定最后一个单元格的示例https://www.excelcampus.com/vba/find-last-row-column-cell

打开一个文本文件,你会在这里找到reading entire text file using vba

【讨论】:

  • 感谢您的快速响应,我会看看它是否对我有帮助
  • 我刚刚更新了我的原始帖子。看看这是否符合您的要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 2017-07-01
  • 2019-10-27
相关资源
最近更新 更多