在同一张纸上使用 VBA 将文本文件读入 Excel

问题描述 投票:0回答:1

我有一个文本文件想要导入到当前的 Excel 工作表中。我找到了一些几乎可以满足我要求的在线资源。下面是我发现的代码,它完全按照我想要的方式保留文本,但是它会打开一个全新的 Excel 工作簿应用程序并将其粘贴到那里。这并不理想,因为有时我通常必须循环遍历其中的许多内容,并且我在要导入这些内容的选项卡上运行着 VBA/宏。对工作表、ActiveSheet 等的任何引用都不适用于工作簿,而是工作簿对象,因此我根本无法手动引用我想要的工作表。

Workbooks.OpenText Filename:="C:\textexample.txt", _
  Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, _
  TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
  Tab:=False, Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
    Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
    Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), _
    Array(11, 1), Array(12, 1), Array(13, 1)), _
  TrailingMinusNumbers:=True

我知道 Power Query。尝试了一下,虽然它确实使用适当的分隔符将所有内容导入到我想要的工作表中,但它总是将其添加到表格中,并带有下拉菜单、格式设置等。我根本不想要这样。我希望它是纯文本格式,就像在 .txt 文档中一样。到目前为止,我唯一的想法就是这样做,但让它将表粘贴到远离我的数据的地方,然后让 VBA 将文本值复制到我想要的位置,然后完全删除该表。这也不是唯一的解决方案。

遗憾的是,我的 Excel 版本没有“旧版文本”选项,无法简单地使用常规文本和所有内容。

有没有一种简单的方法可以直接将数据从文本文件导入到工作表中,而不需要疯狂的样式、表格或格式?

excel vba text import
1个回答
0
投票
  • OpenText
    在新窗口中打开文本文件,但您可以将工作表复制到工作簿中并将其关闭。
Sub Demo()
    Dim curWK As Workbook
    Set curWK = ActiveWorkbook ' or ThisWorkbook
    Workbooks.OpenText Filename:="C:\textexample.txt", _
        Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
        Tab:=False, Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
          Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
          Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), _
          Array(11, 1), Array(12, 1), Array(13, 1)), _
        TrailingMinusNumbers:=True
    With ActiveWorkbook
        .Sheets(1).Copy after:=curWK.Sheets(curWK.Sheets.Count)
        .Close
    End With
    ' Your code to process the imported data
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.