Функция GetOpenFileName

Declare Function GetOpenFileName Lib "comdlg32" Alias "GetOpenFileNameA" ( _
        pOPENFILENAME As OPENFILENAME) As Long

GetOpenFileName открывает стандартное общее диалоговое окнo открытия файла. Функция не открывает файлы, а только открывает диалоговое окно и возвращает имя файла (файлов).

Возвращаемое значение

Функция возвращает 0 в случае ошибки или если была нажата кнопка Отмена, в успешном случае возвращается 1.

Параметры

pOPENFILENAME
Содержит параметры для открытия диалогового окна. Также получает возвращаемое имя файла или файлов и другую информацию

Пример

 Dim OpenFile As OPENFILENAME
 Dim lRet As Long
 Dim sFilter As String
 Dim errcode As Long
 
 OpenFile.lStructSize = Len(OpenFile)
 OpenFile.hwndOwner = Form1.hWnd
 OpenFile.hInstance = App.hInstance
 sFilter = "Текстовые файлы (*.txt)" & Chr(0) & "*.TXT" & Chr(0)
 OpenFile.lpstrFilter = sFilter
 OpenFile.nFilterIndex = 1
 OpenFile.lpstrFile = String(257, 0)
 OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
 OpenFile.lpstrFileTitle = OpenFile.lpstrFile
 OpenFile.nMaxFileTitle = OpenFile.nMaxFile
 OpenFile.lpstrInitialDir = "C:\"
 OpenFile.lpstrTitle = "Ищем текстовые файлы"
 OpenFile.flags = 0
 lRet = GetOpenFileName(OpenFile)
 
 If lRet = 0 Then
' это происходит в двух случаях
' или нажата кнопка Отмена
' или произошла ошибка.
' Например, установите слишком маленький буфер OpenFile.lpstrFile = String(2, 0)
' чтобы увидеть ошибку
'        MsgBox "Вы нажали кнопку Отмена" 'если нажата Отмена
        errcode = CommDlgExtendedError() ' получаем код ошибки для GetOpenFileName
  
  If errcode = FNERR_BUFFERTOOSMALL Then
    Debug.Print "Буфер слишком маленький, чтобы содержать имя файла"

 End If
 
 Else
        MsgBox "Вы выбрали " & Trim(OpenFile.lpstrFile)
 End If

Смотри также

GetSaveFileName

Категория

Общее диалоговое окно