【发布时间】:2017-10-18 20:36:36
【问题描述】:
我编写了一个代码,允许用户选择一个文件夹,然后循环遍历文件夹中的所有文件,将特定列的数据复制到我的主文档“PQ 分析电子表格”中。
我想改进此代码,使其更通用。
有什么方法可以改变它,这样我就不必将“PQ 分析电子表格”指定为主文档?也就是说,它可以根据用户的意愿进行调用。
此外,我目前将每个文件打开到一个新工作簿中,然后从那里复制。我确定必须有一种方法可以直接从 txt 文件输入到数组中,然后从那里打印?
任何建议将不胜感激。这是我编写的第一个 VBA 代码,所以对这种语言非常陌生!谢谢。
Sub tabdelim()
Dim strFileToOpen
Dim InputFile As Workbook
Dim OutputFile As Workbook
'Dialogue box to select file to open
strFileToOpen = Application.GetOpenFilename _
(Title:="Please choose a file to open", _
FileFilter:="Text Files *.txt* (*.txt*),")
If strFileToOpen = False Then
MsgBox "No file selected.", vbExclamation, "No file selected!"
Exit Sub
Else
'Open selected file in new workbook
Workbooks.OpenText Filename:= _
strFileToOpen, _
Origin:=65001, 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, 1), Array(8, 1), _
Array(9, 1)), TrailingMinusNumbers:=True
End If
Set InputFile = ActiveWorkbook
'Now, copy what you want from InputFile:
ActiveSheet.Range("I3:I660").Copy
'Now, paste to OutputFile worksheet:
Windows("PQ Analysis spreadsheet.xls").Activate
Set OutputFile = ActiveWorkbook
Range("C43").Select
ActiveSheet.Paste
'Close InputFile
InputFile.Close
End Sub
【问题讨论】:
-
Dim strWorkbookName As String: strWorkbookName = InputBox("Select a workbook") -
使用 Power Query 会更简单、更高效。