Tim
我正在查看其他人使用 openfiledialog 的其他代码,但是,我不确定哪些变量正在获取文件名和路径?有什么想法吗?另外,任何建议都欢迎
谢谢你
Mark
- Public 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 ShowFileOpenDialog(ByRef FileList As Collection)
- Dim OpenFile As OPENFILENAME
- Dim lReturn As Long
- Dim FileDir As String
- Dim FilePos As Long
- Dim PrevFilePos As Long
- With OpenFile
- .lStructSize = Len(OpenFile)
- .hwndOwner = 0
- .hInstance = 0
- .lpstrFilter = "Image File (*.tif)" + Chr(0) + "*.tif"
- .nFilterIndex = 1
- .lpstrFile = String(4096, 0)
- .nMaxFile = Len(.lpstrFile) - 1
- .lpstrFileTitle = .lpstrFile
- .nMaxFileTitle = .nMaxFile
- .lpstrInitialDir = ThisDrawing.Path
- .lpstrTitle = "Select Image File"
- .flags = OFN_HIDEREADONLY + _
- OFN_PATHMUSTEXIST + _
- OFN_FILEMUSTEXIST + _
- OFN_ALLOWMULTISELECT + _
- OFN_EXPLORER
- lReturn = GetOpenFileName(OpenFile)
- If lReturn 0 Then
- FilePos = InStr(1, .lpstrFile, Chr(0))
- If Mid(.lpstrFile, FilePos + 1, 1) = Chr(0) Then
- FileList.Add .lpstrFile
- Else
- FileDir = Mid(.lpstrFile, 1, FilePos - 1)
- Do While True
- PrevFilePos = FilePos
- FilePos = InStr(PrevFilePos + 1, .lpstrFile, Chr(0))
- If FilePos - PrevFilePos > 1 Then
- FileList.Add FileDir + "" + _
- Mid(.lpstrFile, PrevFilePos + 1, _
- FilePos - PrevFilePos - 1)
- Else
- Exit Do
- End If
- Loop
- End If
- End If
- End With
- End Sub
- Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
- "GetOpenFileNameA" (pOpenFileName As OPENFILENAME) As Long
- Function SelectFiles() As String
- Dim FileList As New Collection
- Dim I As Long
- Dim s As String
- ShowFileOpenDialog FileList
- With FileList
- If .Count > 0 Then
- s = "The following files were selected:" + vbCrLf
- For I = 1 To .Count
- SelectFiles = .Item(I)
- Next
- Else
- Exit Function
- 'MsgBox "No files were selected!"
- End If
- End With
- End Function
|