alibek писал(а): GetOpenFileName это функция универсальная, она работает на любой версии Windows. Приведи пример вызова, наверное там что-то неправильно.
Private Sub Form_Load()
Dim DXFFile As OPENFILENAME
Dim t$, t1$, i As Integer
PathMSAPR$ = SetPathMSAPR 'Функция определяет путь к директории MSAPR, директория DXF является поддиректорией MSAPR
DXFFile.lStructSize = Len(DXFFile)
'Set the parent window
DXFFile.hwndOwner = Me.hWnd
'Set the application's instance
DXFFile.hInstance = App.hInstance
'Select a filter
DXFFile.lpstrFilter = "DXF Files (*.dxf)" + Chr$(0) + "*.dxf" + Chr$(0)
'create a buffer for the file
DXFFile.lpstrFile = Space$(254)
'set the maximum length of a returned file
DXFFile.nMaxFile = 255
'Create a buffer for the file title
DXFFile.lpstrFileTitle = Space$(254)
'Set the maximum length of a returned file title
DXFFile.nMaxFileTitle = 255
'Set the initial directory
DXFFile.lpstrInitialDir = PathMSAPR + "dxf"
'Set the title
DXFFile.lpstrTitle = "Выбор файла для обработки "
'No flags
DXFFile.flags = 0
If GetOpenFileName(DXFFile) Then
FileName$ = Mid$(DXFFile.lpstrFile, DXFFile.nFileOffset + 1, DXFFile.nFileExtension - DXFFile.nFileOffset - 1)
Else
MsgBox "Файл не выбран" + Chr(13) + "Программа завершена"
End
End If
'FileName – имя файла (без расширения)
End Sub
А может проще применить:
CommonDialog1.CancelError = True
CommonDialog1.Filter = "Все файлы |*.*|DXF файлы |*.dxf|"
CommonDialog1.ShowOpen
Open CommonDialog1.FileName For Output As #1
не знаю только про универсальность данного способа.