我有一个文本数据文件,我将其下载到计算机上的某个位置。现在,在我的VBA脚本中,我的路径是硬编码的。如果可能的话,我想要的是用户在这种情况下单击工作表“Main”中的单元格(C5),当他/她这样做时,会弹出一个对话框提示用户导航到文本文件并选择它。用户选择文本文件后,我希望单元格C5值保存文本文件的文件路径。
我希望将C5的值替换为我在VBA脚本中的硬编码文件路径:
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;\\psf\Home\Desktop\Temp\sample.txt", Destination:=Range( _
"$A$1"))
.Name = "fills"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = "|"
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
我希望C5的值进入Connection之后的部分:=我不知道该怎么办的部分,并希望得到帮助/输入。
这可能吗?
答案 0 :(得分:3)
以下代码将在用户 右键单击 C5
第1部分
码
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim strFileToOpen As String
If Target.Address(0, 0) <> "C5" Then Exit Sub
strFileToOpen = Application.GetOpenFilename _
(Title:="Please choose a file to place in C5 (pick Open)", _
FileFilter:="Text Files *.txt (*.txt),"
If strFileToOpen = "False" Then
[c5].Value2 = "No file selected"
Else
[c5].Value2 = strFileToOpen
End If
End Sub
第2部分
变化
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;\\psf\Home\Desktop\Temp\sample.txt", Destination:=Range( _
"$A$1"))
到
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & [c5].value2 & "", Destination:=Range( _
"$A$1"))