Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Диалог выбора файла / 25 сообщений из 26, страница 1 из 2
03.12.2015, 11:03
    #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
03.12.2015, 11:11
    #39119145
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диалог выбора файла
focusНик,
читай комменты в коде до просветления.
...
Рейтинг: 0 / 0
03.12.2015, 11:19
    #39119153
focusНик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диалог выбора файла
Predeclared,

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

Я понимаю что именно это строка отвечает за открываемую папку в диалоге, а вот что туда прописать вместо "%USERPROFILE%\Desktop\"
...
Рейтинг: 0 / 0
03.12.2015, 11:52
    #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
03.12.2015, 11:52
    #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
03.12.2015, 11:57
    #39119237
focusНик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диалог выбора файла
Akina,

Спасибо. Именно это я и хотел, просто не допетрил как записать
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
21.12.2020, 19:19
    #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
22.12.2020, 06:06
    #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
22.12.2020, 10:08
    #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
22.12.2020, 11:04
    #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
22.12.2020, 11:10
    #40030058
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диалог выбора файла
upack
FileDialog всё равно не запоминает последний использованный путь.

Да не FileDialog должен хранить путь.
А глобальная переменная.
Которую вы подсовываете при открытии оного.
...
Рейтинг: 0 / 0
22.12.2020, 15:18
    #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
22.12.2020, 16:44
    #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
22.12.2020, 17:28
    #40030257
upack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диалог выбора файла
ну да, на её и ругается. А что сделать - не знаю.
...
Рейтинг: 0 / 0
22.12.2020, 21:10
    #40030315
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диалог выбора файла
upack
ну да, на её и ругается. А что сделать - не знаю.

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

только сейчас заметил. у меня и было "ChDir"
22252270
...
Рейтинг: 0 / 0
22.12.2020, 23:15
    #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
23.12.2020, 04:37
    #40030347
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диалог выбора файла
upack
всем спасибо огромное!!!
пожалуйста.
upack
Оказывается всё просто, когда разберёшься
ога прастихоспаде...
upack, ты балбес? Просто скопировать не можешь 22252344 ?
...
Рейтинг: 0 / 0
23.12.2020, 12:33
    #40030421
upack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диалог выбора файла
так это у уважаемого mds_world неправильно скопировалось :)
...
Рейтинг: 0 / 0
23.12.2020, 13:50
    #40030462
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диалог выбора файла
upack
так это у уважаемого mds_world неправильно скопировалось :)

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


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


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


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


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