powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / окошко на ввод имени файла
9 сообщений из 9, страница 1 из 1
окошко на ввод имени файла
    #32644271
mik@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скажите пожалуйста еть ли в аксессе стандартное окно на ввод пути и имени файлов
спасибо
...
Рейтинг: 0 / 0
окошко на ввод имени файла
    #32644290
RVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Application.FileDialog(msoFileDialogFilePicker)
Но это с 2000, по моему.
...
Рейтинг: 0 / 0
окошко на ввод имени файла
    #32644311
Фотография kedzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
Параметры:
InitDir - папка в которой искать файл
fname - начальное имя файла
Функция возвращает пустую строку в случае если была нажата кнопка  'Отмена'/'Cancel', 
либо полное имя файла. 

Примеры вызова функции:
...
Dim strFileName as string
strFileName=OpenFile("C:\", "")
или
strFileName=OpenFile("", "northwind.mdb")
или
strFileName=OpenFile("", "")
 
Declare Function GetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Boolean
Declare Function GetSaveFileName Lib "comdlg32.dll" _
Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Boolean

Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As Long
nMaxCustrFilter 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
lCustrData As Long
lpfnHook As Long
lpTemplateName As Long
End Type

Public Const OFN_ALLOWMULTISELECT = &H200
Public Const OFN_CREATEPROMPT = &H2000
Public Const OFN_EXPLORER = &H80000
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_NOCHANGEDIR = &H8
Public Const OFN_NODEREFERENCELINKS = &H100000
Public Const OFN_NONETWORKBUTTON = &H20000
Public Const OFN_NOREADONLYRETURN = &H8000
Public Const OFN_NOVALIDATE = &H100
Public Const OFN_OVERWRITEPROMPT = &H2
Public Const OFN_PATHMUSTEXIST = &H800
Public Const OFN_READONLY = &H1
Public Const OFN_SHOWHELP = &H10

Public Function OpenFile(ByVal InitDir As String, ByVal fname As String) As String
Dim strFile As String *  512 
Dim of As OPENFILENAME
Dim f As String
Dim p%
 ' Установка начальных значений структуры 
of.hwndOwner = Application.hWndAccessApp
of.hInstance =  0 
of.lpstrCustomFilter =  0 
of.nMaxCustrFilter =  0 
of.lpfnHook =  0 
of.lpTemplateName =  0 
of.lCustrData =  0 
 'Ниже вы можете изменить фильтры для поиска файлов 
of.lpstrFilter = "MS Access Database (*.mdb)" & Chr$( 0 ) & "*.mdb" & Chr$( 0 ) & _
"Add-ins (*.mda)" & Chr$( 0 ) & "*.mda" & Chr$( 0 ) & _
"MDE-Files (*.mde)" & Chr$( 0 ) & "*.mde" & Chr$( 0 ) & _
"All Files (*.*)" & Chr$( 0 ) & "*.*" & Chr$( 0 ) & Chr$( 0 )

of.nFilterIndex =  3 

of.lpstrFile = fname & String$( 512  - Len(fname),  0 )
of.nMaxFile =  511 

of.lpstrFileTitle = String$( 512 ,  0 )
of.nMaxFileTitle =  511 
 ' Ниже вы можете изменить заголовок окна 
of.lpstrTitle = "Открыть модуль"

of.lpstrInitialDir = InitDir
 ' Можете изменить расширение файла 
of.lpstrDefExt = "mde"

of.Flags = OFN_FILEMUSTEXIST + OFN_PATHMUSTEXIST 
of.lStructSize = Len(of)
If GetOpenFileName(of) Then
p% = InStr( 1 , of.lpstrFile, Chr$( 0 ))
OpenFile = Left(of.lpstrFile, p% -  1 )
Else
OpenFile = ""
End If
End Function

 

...
Рейтинг: 0 / 0
окошко на ввод имени файла
    #32644437
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вариант, здеся нашелся:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
 '==========Объявления модуля сохранения в файл 
    Dim wzhwndOwner As Long
    Dim wzAppName As String
    Dim wzDlgTitle As String
    Dim wzOpenTitle As String
    Dim wzFile As String
    Dim wzInitialDir As String
    Dim wzFilter As String
    Dim wzFilterIndex As Long
    Dim wzView As Long
    Dim wzflags As Long
    Dim wzfOpen As Boolean
    Dim ret As Long
 '=========== 
    
    WizHook.Key =  51488399 
    
 '==========Сохраняем в файл 
    wzhwndOwner =  0 &
    wzAppName = ""
    wzDlgTitle = "Сохранить отчет"  'Заголовок окна 
    wzOpenTitle = "Сохранить"  'Надпись на кнопке 
    wzFile = String( 255 , Chr( 0 ))  'переменная в которой сохранится имя файла 
    wzInitialDir = "c:\"  'начальный путь 
    wzFilter = "Excel file " _
    & "(*.xls)"  ' расширения сохраняемого\открываемого файла 
    wzFilterIndex =  1 
    wzView =  1 
    wzflags =  64 
    wzfOpen = False  ' в зависимости от значения - сохранить \открыть 

    ret = WizHook.GetFileName(wzhwndOwner, _
    wzAppName, wzDlgTitle, wzOpenTitle, wzFile, _
    wzInitialDir, wzFilter, wzFilterIndex, _
    wzView, wzflags, wzfOpen)
    
 '========== Проверка нажата ли кнопка ESC 
    If ret <> - 302  Then
........  ' какието действия, wzFile=путь к файлу 
    End If
...
Рейтинг: 0 / 0
окошко на ввод имени файла
    #32644480
Фотография Talen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RVI Application.FileDialog(msoFileDialogFilePicker)
Но это с 2000, по моему.

У меня сия штука не работала в 2000-ном.
Можно заюзать WinAPI - работает железно!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
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

Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenFilename As OPENFILENAME) As Long


 'Ввод имени файла 
Public Function InputFile(ByVal strTitle As String, ByVal strFilter As String) As String
    Dim lngReturn As Long
    Dim intLocNull As Integer
    Dim strTemp As String
    Dim ofnFileInfo As OPENFILENAME
    Dim strInitialDir As String
    Dim strFileName As String
    
    strInitialDir = String( 256 ,  0 )  'CurrentProject.Path 
    strFileName = String( 256 ,  0 )
    
    With ofnFileInfo
        .lStructSize = Len(ofnFileInfo)
        .lpstrFile = strFileName
        .lpstrFileTitle = String( 256 ,  0 )
        .lpstrInitialDir = strInitialDir
        .hwndOwner = Application.hWndAccessApp
        .lpstrFilter = strFilter
        .nFilterIndex =  1 
        .nMaxFile = Len(strFileName)
        .nMaxFileTitle = ofnFileInfo.nMaxFile
        .lpstrTitle = strTitle
        .flags = &H1000 Or &H800
        .hInstance =  0 
        .lpstrCustomFilter = String( 255 ,  0 )
        .nMaxCustFilter =  255 
        .lpfnHook =  0 
    End With
    
    lngReturn = GetOpenFileName(ofnFileInfo)
    If lngReturn =  0  Then
        strFileName = ""
    Else
        strTemp = Trim(ofnFileInfo.lpstrFile)
        intLocNull = InStr(strTemp, Chr( 0 ))
        If intLocNull Then
            strTemp = Left(strTemp, intLocNull -  1 )
        End If
        strFileName = strTemp
    End If
    InputFile = strFileName
End Function

... а вызывать очень просто -
Код: plaintext
1.
2.
3.
    strFile = InputFile("Загрузка документа", "Текстовые файлы (*.txt)" & vbNullChar & "*.txt" & vbNullChar & vbNullChar)
    if strFile <> "" then ЗАГРУЖАЙСЯ(strFile)

...
Рейтинг: 0 / 0
окошко на ввод имени файла
    #32644529
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эти бесценные крупицы мудрости складывать хорошо бы в регулярное место :)

модуль класса
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
Option Compare Database
Option Explicit

Private Declare Function GetOpenFileName Lib _
         "comdlg32.dll" Alias "GetOpenFileNameA" _
         (pOpenfilename As OPENFILENAME) As Long
Private Declare Function GetSaveFileName Lib _
         "comdlg32.dll" Alias "GetSaveFileNameA" _
         (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

Private mstrFileName As String
Private mblnStatus As Boolean

Public Property Let GetName(strName As String)
         mstrFileName = strName
End Property

Public Property Get GetName() As String
         GetName = mstrFileName
End Property

Public Property Let GetStatus(blnStatus As Boolean)
         mblnStatus = blnStatus
End Property

Public Property Get GetStatus() As Boolean
         GetStatus = mblnStatus
End Property

Public Function OpenFileDialog(lngFormHwnd As Long, _
         lngAppInstance As Long, strInitDir As String, _
         strFileFilter As String) As Long

Dim OpenFile As OPENFILENAME
Dim x As Long

With OpenFile
         .lStructSize = Len(OpenFile)
         .hwndOwner = lngFormHwnd
         .hInstance = lngAppInstance
         .lpstrFilter = strFileFilter
         .nFilterIndex =  1 
         .lpstrFile = String( 257 ,  0 )
         .nMaxFile = Len(OpenFile.lpstrFile) -  1 
         .lpstrFileTitle = OpenFile.lpstrFile
         .nMaxFileTitle = OpenFile.nMaxFile
         .lpstrInitialDir = strInitDir
         .lpstrTitle = "Open File"
         .Flags =  0 
End With
    
x = GetOpenFileName(OpenFile)
If x =  0  Then
         mstrFileName = "none"
         mblnStatus = False
Else
         mstrFileName = Trim(OpenFile.lpstrFile)
         mblnStatus = True
End If
End Function

Public Function SaveFileDialog(lngFormHwnd As Long, _
         lngAppInstance As Long, strInitDir As String, _
         strFileFilter As String) As Long

Dim SaveFile As OPENFILENAME
Dim x As Long
        
With SaveFile
         .lStructSize = Len(SaveFile)
         .hwndOwner = lngFormHwnd
         .hInstance = lngAppInstance
         .lpstrFilter = strFileFilter
         .nFilterIndex =  1 
         .lpstrFile = String( 257 ,  0 )
         .nMaxFile = Len(SaveFile.lpstrFile) -  1 
         .lpstrFileTitle = SaveFile.lpstrFile
         .nMaxFileTitle = SaveFile.nMaxFile
         .lpstrInitialDir = strInitDir
         .lpstrTitle = "Save File"
         .Flags =  0 
End With
    
x = GetSaveFileName(SaveFile)
If x =  0  Then
         mstrFileName = "none"
         mblnStatus = False
Else
         mstrFileName = Trim(SaveFile.lpstrFile)
         mblnStatus = True
End If
End Function

...
Рейтинг: 0 / 0
окошко на ввод имени файла
    #32644689
RVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот ещё...
...
Рейтинг: 0 / 0
окошко на ввод имени файла
    #32644831
mik@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем огромное спасибо
даже не знаю какой вариант реализовывать
еще раз спасибо
...
Рейтинг: 0 / 0
окошко на ввод имени файла
    #32645382
Фотография Talen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно развить тему?
Как бы еще заюзать окошко для выбора каталога, да так, чтобы оно при запуске в нужном каталоге останавливалось, например в последнем?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / окошко на ввод имени файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]