powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Диалог выбора файла
25 сообщений из 26, страница 1 из 2
Диалог выбора файла
    #39119132
focusНик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую форумчан!
Для выбора файла использую следующий код:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub ShowFileDialog()
    Dim oFD As FileDialog
    Dim x, lf As Long
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD 'используем короткое обращение к объекту
    'так же можно без oFD
    'With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Title = "Выбрать файлы отчетов" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Excel files", "*.xls*;*.xla*", 1 'устанавливаем возможность выбора только файлов Excel
        .Filters.Add "Text files", "*.txt", 2 'добавляем возможность выбора текстовых файлов
        .FilterIndex = 2 'устанавливаем тип файлов по умолчанию - Text files(Текстовые файлы)
        .InitialFileName = "%USERPROFILE%\Desktop\" 'назначаем папку отображения по умолчанию
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)
        If oFD.Show = 0 Then Exit Sub 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        For lf = 1 To .SelectedItems.Count
          ' код обработки выбраного файла файла
        Next
    End With
End Sub



Вопрос:
Как прописать в коде чтобы открывалась папка из которой добавлялся последний файл.
т.е. пользователь открыл диалог, добавил файл, и понял что нужно добавить еще один, но открывается снова декстоп а не та папка из которой он выбрал 1 файл.
Надеюсь я донес что мне хочется реализовать.
...
Рейтинг: 0 / 0
Диалог выбора файла
    #39119145
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
focusНик,
читай комменты в коде до просветления.
...
Рейтинг: 0 / 0
Диалог выбора файла
    #39119153
focusНик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Predeclared,

Крайне конструктивный совет до *******
...
Рейтинг: 0 / 0
Диалог выбора файла
    #39119159
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
focusНик , как вариант, использовать глобальную переменную и присваивать ей последнюю открытую директорию.
После чего при открытии диалога:
Код: vbnet
1.
InitialFileName=MyGlobal
...
Рейтинг: 0 / 0
Диалог выбора файла
    #39119185
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
focusНикКрайне конструктивный совет
Уточню. До просветления надо читать комментарий к строке
Код: vbnet
1.
.InitialFileName = "%USERPROFILE%\Desktop\" 'назначаем папку отображения по умолчанию
...
Рейтинг: 0 / 0
Диалог выбора файла
    #39119216
focusНик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Я понимаю что именно это строка отвечает за открываемую папку в диалоге, а вот что туда прописать вместо "%USERPROFILE%\Desktop\"
...
Рейтинг: 0 / 0
Диалог выбора файла
    #39119227
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После выбора файла следует текущий каталог сохранить в переменной или служебной таблице.
При вызове следует получить каталог из переменной или служебной таблицы и указать именно его. Если переменная или таблица НЕ содержат сохранённого каталога - вот тогда указывается каталог по умолчанию, например, как в коде.

Т.е. будет что-то типа

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
' ...
if global_var = "" then 
    .InitialFileName = "%USERPROFILE%\Desktop\"
else 
    
end if
' ...
global_var = .InitialFileName
...
Рейтинг: 0 / 0
Диалог выбора файла
    #39119230
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин...
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
' ...
if global_var = "" then 
    .InitialFileName = "%USERPROFILE%\Desktop\"
else 
    .InitialFileName = global_var
end if
' ...
global_var = .InitialFileName
...
Рейтинг: 0 / 0
Диалог выбора файла
    #39119237
focusНик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Спасибо. Именно это я и хотел, просто не допетрил как записать
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Диалог выбора файла
    #40029882
upack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Подскажите! как впихнуть сей код, в этот код.
автор' ...
if global_var = "" then
.InitialFileName = "%USERPROFILE%\Desktop\"
else
.InitialFileName = global_var
end if
' ...
global_var = .InitialFileName

авторPrivate Sub путь_DblClick(Cancel As Integer)
Dim dlgOpenFile As Object ' FileDialog
Set dlgOpenFile = Application.FileDialog(3) 'msoFileDialogFolderPicker
With dlgOpenFile
.Filters.Clear
.InitialFileName = "Z:\Чертежи для ЦЕХА\*"
.AllowMultiSelect = False
.Title = "Выбор чертежа"
If (.Show = -1) And (.SelectedItems.Count > 0) Then
Me.путь.Value = .SelectedItems(1)
End If
End With
Set dlgOpenFile = Nothing
End Sub

Пробовал по разному. уже не ругается , но и путь не запоминает
...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030009
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
upack
Подскажите! как впихнуть сей код, в этот код.
как-то так...
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Private Sub путь_DblClick(Cancel As Integer)
Dim dlgOpenFile As Object ' FileDialog
Set dlgOpenFile = Application.FileDialog(3) 'msoFileDialogFolderPicker
With dlgOpenFile
.Filters.Clear
if global_var = "" then'но я бы подумал над использованием глобальных переменных...
.InitialFileName = Environ("USERPROFILE") & "\Desktop\"
else
.InitialFileName = global_var
end if

global_var = .InitialFileName

.AllowMultiSelect = False
.Title = "Выбор чертежа"
If (.Show = -1) And (.SelectedItems.Count > 0) Then
Me.путь.Value = .SelectedItems(1)
End If
End With
Set dlgOpenFile = Nothing
End Sub

...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030044
upack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,
Спасибо, что откликнулись. Но! и в это место я тоже пихал код глобальной переменной, FileDialog всё равно не запоминает последний использованный путь.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Private Sub путь_DblClick(Cancel As Integer)
Dim dlgOpenFile As Object ' FileDialog
  Set dlgOpenFile = Application.FileDialog(3) 'msoFileDialogFolderPicker
  With dlgOpenFile
    .Filters.Clear
    If global_var = "" Then
     .InitialFileName = "Z:\Чертежи для ЦЕХА\*"
    Else
     .InitialFileName = global_var
    End If
    
     global_var = .InitialFileName
     
    .AllowMultiSelect = False
    .Title = "Выбор чертежа"
    If (.Show = -1) And (.SelectedItems.Count > 0) Then
      Me.путь.Value = .SelectedItems(1)
    End If
  End With
  Set dlgOpenFile = Nothing
End Sub


авторно я бы подумал над использованием глобальных переменных...
Подскажите, а какие есть варианты?
...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030056
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
upack
FileDialog всё равно не запоминает
диалог по определению не может ничего запомнить - у него нет такой функции.

upack
последний использованный путь.
звучит как то мрачно - " последний путь "... мдя...
тебе нужно обращаться по умолчанию к папке в которой пользователь выбрал последний файл?
тут несколько вариантов
1. можно хранить где-нибудь, например, в таблице с настройками, в реестре и прочее
2. можно сделать каталог текущим - ChDir / CurDir
3. придумай сам...
старый вариант
upack
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
    ...
    .Title = "Выбор чертежа"
    If (.Show = -1) And (.SelectedItems.Count > 0) Then
      Me.путь.Value = .SelectedItems(1)
      global_var = .SelectedItems(1)
    End If
    ...

...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030058
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
upack
FileDialog всё равно не запоминает последний использованный путь.

Да не FileDialog должен хранить путь.
А глобальная переменная.
Которую вы подсовываете при открытии оного.
...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030201
upack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург, Диск менять не собираюсь, поэтому мне достаточно - ChDir
вот только как правильно его внедрить...??? облазил форум но похожих примеров не нашёл, а сам я :(


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub путь_DblClick(Cancel As Integer)
Dim dlgOpenFile As Object ' FileDialog
  Set dlgOpenFile = Application.FileDialog(3) 'msoFileDialogFolderPicker
  With dlgOpenFile
  ChDir "Z:\Чертежи для ЦЕХА\*"
    .Filters.Clear
    .InitialFileName = ChDir

    .AllowMultiSelect = False
    .Title = "Выбор чертежа"
    If (.Show = -1) And (.SelectedItems.Count > 0) Then
      Me.путь.Value = .SelectedItems(1)
    End If
  End With
  Set dlgOpenFile = Nothing
End Sub


Access ругается. :(
...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030235
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
upack
Access ругается. :(

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub путь_DblClick(Cancel As Integer)
Dim dlgOpenFile As Object ' FileDialog
  Set dlgOpenFile = Application.FileDialog(3) 'msoFileDialogFolderPicker
  With dlgOpenFile
  ChDir "Z:\Чертежи для ЦЕХА\*"
    .Filters.Clear
    .InitialFileName = CurDir

    .AllowMultiSelect = False
    .Title = "Выбор чертежа"
    If (.Show = -1) And (.SelectedItems.Count > 0) Then
      Me.путь.Value = .SelectedItems(1)
    End If
  End With
  Set dlgOpenFile = Nothing
End Sub
...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030257
upack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну да, на её и ругается. А что сделать - не знаю.
...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030315
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
upack
ну да, на её и ругается. А что сделать - не знаю.

Вы не заметили, что вместо инструкции ChDir применена функция CurDir , которая возвращает имя текущей папки?
...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030326
upack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mds_world,
[img=]
всё равно ругается

только сейчас заметил. у меня и было "ChDir"
22252270
...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030331
upack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оказывается всё просто, когда разберёшься
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub путь_DblClick(Cancel As Integer)
Dim dlgOpenFile As Object ' FileDialog
  Set dlgOpenFile = Application.FileDialog(3) 'msoFileDialogFolderPicker
  With dlgOpenFile
  ChDir "Z:\Чертежи для ЦЕХА\*"
    .Filters.Clear
    .InitialFileName = "ChDir"

    .AllowMultiSelect = False
    .Title = "Выбор чертежа"
    If (.Show = -1) And (.SelectedItems.Count > 0) Then
      Me.путь.Value = .SelectedItems(1)
    End If
  End With
  Set dlgOpenFile = Nothing
End Sub


"ChDir"

а вот как сюда впихнуть CurDir ?
(но это мне пока ненужно)

всем спасибо огромное!!!
...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030347
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
upack
всем спасибо огромное!!!
пожалуйста.
upack
Оказывается всё просто, когда разберёшься
ога прастихоспаде...
upack, ты балбес? Просто скопировать не можешь 22252344 ?
...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030421
upack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так это у уважаемого mds_world неправильно скопировалось :)
...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030462
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
upack
так это у уважаемого mds_world неправильно скопировалось :)

upack
Код: vbnet
1.
.InitialFileName = "ChDir"


mds_world
Код: vbnet
1.
.InitialFileName = CurDir


upack, кроме того что балбес, так ещё и неправду говоришь.
...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030471
bubucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну хз...я вот на этом сломался
авторОказывается всё просто, когда разберёшься
Код: vbnet
1.
2.
3.
...
.InitialFileName = "ChDir"
...


и перестал понимать, что здесь происходит
...
Рейтинг: 0 / 0
Диалог выбора файла
    #40030473
upack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторupack, кроме того что балбес, так ещё и неправду говоришь.
наверно я не правильно понял о чём речь, соответственно не понимаю в какой неправде вы меня уличили.
Возможно вы и правы. :)
ещё раз: Спасибо всем!
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Диалог выбора файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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