VBA对话文件筛选器部分文件名
我有一个包含几个.txt文件的目录。比方说VBA对话文件筛选器部分文件名,vba,filesystems,Vba,Filesystems,我有一个包含几个.txt文件的目录。比方说 hi.txt hello.txt hello_test.txt test.txt 使用VBA中的文件对话框,如何筛选以在下拉列表中仅显示“*test.txt”匹配文件(即最后两个)?或者我只能使用*。过滤器 以下内容似乎应该有效,但不起作用: Sub TestIt() Dim test As Variant 'silly vba for not having a return type.. test = Application.GetOp
hi.txt
hello.txt
hello_test.txt
test.txt
使用VBA中的文件对话框,如何筛选以在下拉列表中仅显示“*test.txt”匹配文件(即最后两个)?或者我只能使用*。过滤器
以下内容似乎应该有效,但不起作用:
Sub TestIt()
Dim test As Variant 'silly vba for not having a return type..
test = Application.GetOpenFilename(FileFilter:="test (*test.txt), *test.txt")
End Sub
编辑:如果不清楚,请澄清:我想筛选“test.txt”而不是“.txt”文件,这样我只能在选择器中从hello_test.txt和test.txt中进行选择。文件对话框如何
Dim dlgOpen As FileDialog
Set dlgOpen = Application.FileDialog(msoFileDialogOpen)
With dlgOpen
.AllowMultiSelect = True
.InitialFileName = "Z:\docs\*t*.*x*"
.Show
End With
这就是你要尝试的吗?将其粘贴到模块中,然后运行子
OpenMyFile
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Sub OpenMyFile()
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim strFilter As String
OpenFile.lStructSize = Len(OpenFile)
'~~> Define your filter here
strFilter = "Text File (*test.txt)" & Chr(0) & "*test.txt" & Chr(0)
With OpenFile
.lpstrFilter = strFilter
.nFilterIndex = 1
.lpstrFile = String(257, 0)
.nMaxFile = Len(.lpstrFile) - 1
.lpstrFileTitle = .lpstrFile
.nMaxFileTitle = .nMaxFile
.lpstrInitialDir = "C:\Users\Siddharth Rout\Desktop\"
.lpstrTitle = "My FileFilter Open"
.flags = 0
End With
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
'~~> User cancelled
MsgBox "User cancelled"
Else
MsgBox "User selected" & ":=" & OpenFile.lpstrFile
'
'~~> Rest of your code
'
End If
End Sub
我知道您关心的是在文件名框中输入文本,但这正是您需要做的,并且似乎是您的情况的标准。我在同一个问题上挂断了电话 这就是我使用的:
Public Sub Browse_Click()
Dim fileName As String
Dim result As Integer
Dim fs
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Select Test File"
.Filters.Add "Text File", "*.txt"
.FilterIndex = 1
.AllowMultiSelect = False
.InitialFileName = "*test*.*"
result = .Show
If (result <> 0) Then
fileName = Trim(.SelectedItems.Item(1))
Me!txtFileLocation = fileName
End If
End With
公共子浏览\u单击()
将文件名设置为字符串
将结果设置为整数
暗fs
使用Application.FileDialog(msoFileDialogFilePicker)
.Title=“选择测试文件”
.Filters.Add“文本文件”、“*.txt”
.FilterIndex=1
.AllowMultiSelect=False
.InitialFileName=“*测试*”
结果=.Show
如果(结果0),则
fileName=Trim(.SelectedItems.Item(1))
我txtFileLocation=fileName
如果结束
以
它不过滤显示的文件,而是将文本放在文本框的“文本区域”。谢谢,这正是我想做的-实现这一点的过程很奇怪(??)。您可以通过“initialFileName”筛选器设置筛选器。。。我想只要它起作用:-)