Excel 2016
你好
我有一个名为“Project”的工作簿和一个名为“Imported_Text”的工作表。
从在线资源和我自己有限的知识(反对可能性)生成了一个子(宏),它将打开用户选择的制表符分隔的 txt 文件,仅选择我需要的列,然后将其放在工作表中。一切正常,但是,Excel 总是创建一个新的工作簿并将导入的数据放入其中,这是我不想要的。
我需要能够从“项目”工作中运行子宏,并将导入的数据放入现有的“Imported_Text”工作表中,但我无法弄清楚如何。
我知道我可以录制宏,执行导入文本文件,当宏仍在录制时,手动选择并复制新工作表中的数据,将其粘贴到我的“Imported_Text”工作表中,保存我的“项目”工作簿,关闭保存 Excel 创建的新工作簿并停止宏录制。这会给我 VBA 代码来实现我的目标,但这似乎是一种相当复杂的做事方式。
任何人都可以提出更好的方法吗?
例如,数组的结果是否可以在将结果写入新文件并粘贴到我选择的工作表之前被捕获(到剪贴板?)?
这是我的代码 - 它远非优雅,但它有效,
Sub ImportTXT()
Dim Answer As VbMsgBoxResult
Dim fDialog As FileDialog, result As Integer
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
'Optional: FileDialog properties
fDialog.AllowMultiSelect = False
fDialog.Title = "Select a file"
fDialog.InitialFileName = "F:\"
'Optional: Add filters
fDialog.Filters.Clear
fDialog.Filters.Add "Text/CSV files", "*.txt"
Answer = MsgBox("Are You Sure You Want To Import A Text File?", vbYesNo + vbCritical, "Import A Text File")
If Answer = vbYes Then
Application.ScreenUpdating = False
FName = Application.GetOpenFilename()
' ImportTXT code copied from Macro recording
Workbooks.OpenText FileName:=FName, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _
False, 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, 9), Array(8 _
, 9), Array(9, 9), Array(10, 1), Array(11, 9), Array(12, 9), Array(13, 9), Array(14, 9), _
Array(15, 9), Array(16, 9), Array(17, 9), Array(18, 9), Array(19, 9), Array(20, 9), Array( _
21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 9)), TrailingMinusNumbers _
:=True
End If
End Sub
这是一个修改代码的示例,它允许选择不同的文件,并将它们写入活动工作簿中的工作表。
我使用 CSV 文件进行测试,但是:
comma
我用于测试的分隔符更改为tab
TextFileColumnDataTypes
根据您的要求更改阵列。Set rDest = …
为Set rDest = ActiveSheet.Cells(row,column)
这个 VBA 宏解决了这个问题。
这个怎么运作:
注意
在此代码
(*.Txt),*.Txt"
中它也应该是可编辑的*.CSV
。将工作簿另存为已启用宏。
我制作了一个类似的宏,可以在单个操作中读取文件,并且它还在将项目放入单元格之前清理数据:
笔记
您可以阅读我在我的网站上为我的开源项目编写的文章形式的此信息:https ://www.virtualtwigs.com/articles/excel_macro_import_tab_delim_txt_article