Ønsker å lage en dialog boks hvor jeg kan søke etter en del av et fil navn. Ønsker også at jeg kan legge inn default søkemappe. Når filen er funnet skal jeg kunne åpne den direkte fra søkeresultatet.
Du kan bruge den klassiske "File Open" dialog. Her kan du jo skrive en del af filnavnet i feltet Filename/Filnavn. Søgemappen kan du fastlægge i kaldet:
Option Compare Database Option Explicit
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
Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Function SimpleGetOpenFileName(Title As String, InitDir As String, FilterList As String) As String Dim msaof As OPENFILENAME Dim intRet As Integer Dim strRet As String Dim StrFilter As String Dim S1 As String Dim FCount As Integer Dim i As Integer Dim p As Integer, p2 As Integer
FCount = 0 For i = 1 To Len(FilterList) If Mid(FilterList, i, 1) = "#" Then FCount = FCount + 1 Next i StrFilter = "" For i = 1 To FCount p = InStr(1, FilterList, "#") S1 = Left(FilterList, p - 1) StrFilter = StrFilter & S1 & vbNullChar p2 = InStr(1, S1, "(") StrFilter = StrFilter & Mid(S1, p2 + 1, Len(S1) - p2 - 1) & vbNullChar FilterList = Right(FilterList, Len(FilterList) - p) Next i StrFilter = StrFilter & vbNullChar
With msaof .lStructSize = Len(msaof) .lpstrTitle = Title .lpstrInitialDir = InitDir .lpstrFilter = StrFilter .nFilterIndex = 1 .lpstrFile = String$(255, 0) .nMaxFile = 255 End With intRet = GetOpenFileName(msaof) If intRet Then strRet = msaof.lpstrFile p = InStr(1, strRet, vbNullChar) strRet = Left(strRet, p - 1) End If SimpleGetOpenFileName = strRet End Function
Sub Test_SimpleGetOpenFileName() Dim FilterList As String Dim FileName As String
FilterList = "All files (*.*)#Excel sheets (*.xls)#Word docs (*.doc)#" FileName = SimpleGetOpenFileName("Open", "C:\", FilterList) If FileName = "" Then MsgBox "Abort" Else MsgBox "<" & FileName & ">" End If End Sub
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.