Excel VBA-使用“导入”将多个文本文件导入同一工作簿~&引用;分隔值
我对VBA编码非常陌生,所以我可能完全错了。这是我在网上找到的一些代码,并为我的目的进行了修改 我需要将4个文本文件导入同一工作簿。 这些文本文件没有标题,因此我想将文本导入到具有标题的不同的预先存在的工作表中。 我的代码可以很好地导入文本和分隔特殊字符,但是它会打开到一个新的电子表格中,我只能执行一次 我需要一个对话框供用户选择文件,并在对话框中提示用户要导入哪个文件。 例如,第一个文件显示“选择上一个SVCORPNS文件”,第二个文件显示“选择上一个模型文件”,第三个文件显示“选择当前SVCORPNS文件”,第四个文件显示“选择当前模型文件”。 分隔的值是~ 我需要一种方法来循环选择4个文本文件。 我可以在以后添加标题,但无法导入到预先存在的工作表中 我尝试过宏录制和使用power query,这很好,但我不知道如何打开对话框更改代码,以便用户选择文件Excel VBA-使用“导入”将多个文本文件导入同一工作簿~&引用;分隔值,excel,vba,Excel,Vba,我对VBA编码非常陌生,所以我可能完全错了。这是我在网上找到的一些代码,并为我的目的进行了修改 我需要将4个文本文件导入同一工作簿。 这些文本文件没有标题,因此我想将文本导入到具有标题的不同的预先存在的工作表中。 我的代码可以很好地导入文本和分隔特殊字符,但是它会打开到一个新的电子表格中,我只能执行一次 我需要一个对话框供用户选择文件,并在对话框中提示用户要导入哪个文件。 例如,第一个文件显示“选择上一个SVCORPNS文件”,第二个文件显示“选择上一个模型文件”,第三个文件显示“选择当前SVC
Sub Macro11()
'
' Macro11 Macro
'
'Imports a text file
Dim vFileName
On Error GoTo ErrorHandle
vFileName = Application.GetOpenFilename("Text Files (*.txt),*.txt", , "select previous SVCORPNS file")
'If the user pressed "Cancel" or didn't select a text file, exit the procedure.
If vFileName = False Then
GoTo BeforeExit
End If
'Switch off screen updating for speed.
Application.ScreenUpdating = False
'We now import the selected text file
Workbooks.OpenText Filename:=vFileName, _
Origin:=xlMSDOS, StartRow:=2, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, _
Comma:=False, Space:=False, Other:=True, OtherChar:="~~", _
TrailingMinusNumbers:=False, Local:=True
'Just to show how we auto adjust the width of column A.
Columns("A:A").EntireColumn.AutoFit
BeforeExit:
Application.ScreenUpdating = True
Exit Sub
ErrorHandle:MsgBox Err.Description
Resume BeforeExit
'
End Sub
非常感谢您的帮助。好的,这里有一个更“完整”的示例:
好的,这里有一个更“完整”的例子:
这个问题涵盖了你想做的事情-只需更改代码中的分隔符:因为答案不完整,所以它不涵盖它。这个问题涵盖了你想做的事情-只需更改代码中的分隔符:因为答案不完整,所以它不涵盖它
Sub Tester()
Dim vFileName, wb As Workbook
Set wb = ThisWorkbook 'for example
'load a file
vFileName = Application.GetOpenFilename("Text Files (*.txt),*.txt", , _
"select previous SVCORPNS file")
If Len(vFileName) > 0 Then
PutDataFromTextFile wb.Sheets("SVCORPNS").Range("A2"), vFileName, "~"
End If
'load another file
vFileName = Application.GetOpenFilename("Text Files (*.txt),*.txt", , _
"select previous MODELS file")
If Len(vFileName) > 0 Then
PutDataFromTextFile wb.Sheets("MODELS").Range("A2"), vFileName, "~"
End If
'load more files to more places....
End Sub
'Read in a delimited file from "fPath", split each row on "delim",
' and put the content onto a sheet starting at "rngDest".
' ## Does not handle cases where a field value can contain the delimiter
' such as for csv where there is "hello, world" as a quoted field value
Sub PutDataFromTextFile(rngDest As Range, fPath, delim As String)
Dim i As Long, fnum As Integer
Dim LineText As String, arr
fnum = FreeFile
i = 0
Open fPath For Input As #fnum
While Not EOF(fnum)
Line Input #fnum, LineText
arr = Split(CStr(LineText), delim)
rngDest.Offset(i, 0).Resize(1, UBound(arr) + 1).Value = arr
i = i + 1
Wend
Close #fnum
End Sub