如何用VBA将文本文件直接导入Excel当前工作表(无格式)
如何直接将纯文本文件导入Excel当前工作表?
我需要将文本文件导入Excel当前工作表。找到的VBA代码虽能保留文本格式,但会打开新工作簿粘贴数据,不符合批量导入及现有宏运行的需求:
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可将数据导入目标工作表,但会生成带下拉框、格式的表格,我需要纯文本格式。我的Excel版本无旧版文本导入选项,请问是否有直接导入纯文本至工作表的方法?
方案1:修改VBA代码,直接导入到当前工作表
无需新建工作簿,直接读取文本文件内容并写入当前工作表指定位置,同时保留纯文本格式:
Sub ImportTextToCurrentSheet() Dim filePath As String Dim fileNum As Integer Dim lineText As String Dim rowNum As Integer Dim colNum As Integer Dim splitData As Variant ' 设置文本文件路径,可替换为批量遍历的路径变量 filePath = "C:\textexample.txt" ' 从当前工作表A1开始写入,可自行调整起始位置 rowNum = 1 colNum = 1 ' 打开文本文件 fileNum = FreeFile() Open filePath For Input As #fileNum ' 逐行读取并分割数据 Do Until EOF(fileNum) Line Input #fileNum, lineText ' 按分号分割(与原OpenText参数一致,可按需修改分隔符) splitData = Split(lineText, ";") ' 写入数据到当前工作表 Cells(rowNum, colNum).Resize(1, UBound(splitData) + 1).Value = splitData ' 设置单元格为纯文本格式 Cells(rowNum, colNum).Resize(1, UBound(splitData) + 1).NumberFormat = "@" rowNum = rowNum + 1 Loop ' 关闭文件 Close #fileNum End Sub
此方法支持批量导入,只需添加循环遍历多个文件路径的逻辑即可。
方案2:调整Power Query导入为纯文本格式
如果偏好Power Query,可通过以下步骤得到纯文本数据:
- 用Power Query导入文本文件后,进入Power Query编辑器
- 选中所有列,右键选择更改类型 -> 文本
- 点击关闭并上载至,选择仅创建连接;右键该连接选择加载到,指定现有工作表的目标位置,取消勾选我的表具有标题(按需选择)
- 加载完成后,选中数据区域,右键选择转换为区域取消表格格式,再设置所有单元格格式为文本
内容的提问来源于stack exchange,提问作者CodeMark22
相关产品推荐
相关产品推荐

