用户input文件名的VBA Excel导入.txt

我不知道这是否可能,但我想有一个用户input文本文件的文件名(不是整个C:\的东西,但只是名称),要导入到Excel电子表格。 我已经得到了用于input文本文件(空格分隔)到电子表格的代码,但我真的很想不回去,每次我想要导入另一个文本文件时更改代码。 这可能吗? 该文件当前称为data.txt,但最有可能的forms是Data_MM_DD_YY

我目前的代码如下:

Option Explicit Public Sub ImportTextFile(FName As String, Sep As String) Dim RowNdx As Long Dim ColNdx As Integer Dim TempVal As Variant Dim WholeLine As String Dim Pos As Integer Dim NextPos As Integer Dim SaveColNdx As Integer Application.ScreenUpdating = False SaveColNdx = ActiveCell.Column RowNdx = ActiveCell.Row Open FName For Input Access Read As #1 Name = InputBox("Enter the name of the text file") While Not EOF(1) Line Input #1, WholeLine If Right(WholeLine, 1) <> Sep Then WholeLine = WholeLine & Sep End If ColNdx = SaveColNdx Pos = 1 NextPos = InStr(Pos, WholeLine, Sep) While NextPos >= 1 TempVal = Mid(WholeLine, Pos, NextPos - Pos) Cells(RowNdx, ColNdx).Value = TempVal Pos = NextPos + 1 ColNdx = ColNdx + 1 NextPos = InStr(Pos, WholeLine, Sep) Wend RowNdx = RowNdx + 1 Wend EndMacro: On Error GoTo 0 Application.ScreenUpdating = True Close #1 End Sub Sub DoTheImport() ImportTextFile FName:="C:\Users\A0K045\Documents\Name).txt", Sep:=" " End Sub 

任何帮助将不胜感激! 如果这是不可能的,是否有类似的可能吗?

你只是想在VBA之外改变文件名? 当然,这没有问题。

您可以创build一个文本文件的表单,然后将该目录附加到string。

或者,您可以让用户将文件名input到电子表格单元格中,并从中取出名称。

这是如何与在工作表中给出的input一起工作的:

 Sub DoTheImport(ByVal strFilename As String) strFilename = "C:\Users\A0K045\Documents\" & strFilename ImportTextFile FName:=strFilename, Sep:=" " End Sub Sub getFilenameFromSheetAndGo() Dim strFilename As String strFilename = ActiveWorkbook.Worksheets("InputFilename").Cells(1, 1).Value 'Cell A1 Call DoTheImport(strFilename) End Sub 

询问名称并在目录前加上;

 Name = InputBox("Enter the name of the text file") If (Name = "") Then Exit Sub open "c:\thedir\" & name for input as #1 ... 

或者你可以使用文件select对话框;

 Dim result As Variant ChDir "c:\thedir\" result = Application.GetOpenFilename("Text Files (*.txt),*.txt") If (result = False) Then Exit Sub open result for input as #1 ...