我录制了一个宏,允许我导入一个文本文件并用“|”分隔。但是,这个宏需要在一天内运行多次。它导入的文本文件的时间戳会在其结尾处发生变化。我想用我的vba代码引用一个单元格,该代码具有单元目录并根据当前时间进行更改。
Sub DataImport()
Dim LResult As String
LResult = Dir(ActiveSheet.Range("C6").Select)
ActiveSheet.Range("B8:G2000").Cells.ClearContents
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;LResult", Destination:= _
Range("$B$8"))
.Name = "CustomerEngagement_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = "|"
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
最重要的是我试图让单元格成为LResult中的目录并在导入中引用它...
思考?我目前正在研究FileSystemOperator,看看我是否可以使用它。
答案 0 :(得分:0)
Dir()
只返回文件名,因此您需要添加目录路径才能将文件传递给QueryTable创建。
像这样(未经测试)
Sub DataImport()
Const FOLDER_PATH as string = "C:\data\example\"
Dim LResult As String
'check for a .txt file with a name containing the value from C6
LResult = Dir(FOLDER_PATH & "*" & ActiveSheet.Range("C6").Value & "*.txt")
if Len(LResult)=0 Then
msgbox "No matching file located"
Exit sub
end if
ActiveSheet.Range("B8:G2000").Cells.ClearContents
With ActiveSheet.QueryTables.Add(Connection:= "TEXT;" & FOLDER_PATH & LResult, _
Destination:= Range("$B$8"))
'...
End Sub
答案 1 :(得分:0)
不知道这个问题是否仍然相关,但解决方法是:
LResult = ActiveSheet.Range("C6").Value
和
"TEXT;" & LResult, Destination:= _