我有一个文本文件想要导入到当前的 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 版本没有“旧版文本”选项,无法简单地使用常规文本和所有内容。
有没有一种简单的方法可以直接将数据从文本文件导入到工作表中,而不需要疯狂的样式、表格或格式?
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