диалог открытия файла...одного

Программирование на Visual Basic for Applications
Max_S
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 15.03.2004 (Пн) 13:22
Откуда: Новосибирск, ОбьГЭС

диалог открытия файла...одного

Сообщение Max_S » 18.03.2004 (Чт) 12:08

В Access XP есть Application.FileDialog(msoFileDialogOpen)
Может я не до конца разобрался? Добился открытия диалога для выбора файлов.
А мне нужно, чтобы можно было выбрать не более одного файла. Как?
MaxS

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 18.03.2004 (Чт) 12:20

.allowmultiselect = false

Max_S
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 15.03.2004 (Пн) 13:22
Откуда: Новосибирск, ОбьГЭС

Сообщение Max_S » 18.03.2004 (Чт) 13:19

заработало...
А таймер там есть? Т.е. если пользователь заснул, то диалог открытия через <время> закрылся...
Вот что получилось. (пока без таймера)
Код: Выделить всё
'В качестве переменной sFullPath задается полный путь файла,
'в качестве point задается разделитель: "\" - если вы хотите получить имя файла,
'"." - если вы хотите получить расширение файла.
Public Function Spliting(sFullPath As String, point As String)
Dim str1() As String
str1 = Split(sFullPath, point)
Spliting = str1(UBound(str1))
End Function

'MaxS  как у 1С ;)
'ВыбратьФайл(<?>,,,,)
'Синтаксис:
'ВыбратьФайл(<ТипДиалога>,<ИмяФайла>,<ИмяНачКаталога>,<ЗаголовокОкна>,<Фильтр>,<Расширение>,<Таймаут>)
'Назначение:
'Открывает окно диалога выбора/сохранения файла.
'Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена', 1 - если нажата кнопка 'ОК'.
'Параметры:
'<ТипДиалога> -: 0 - диалог типа <открыть>, 1 - диалог типа <сохранить>;
'<ИмяФайла> - переменная, содержащая на входе строку с именем файла, а на выходе - имя выбранного файла;
'<ИмяНачКаталога> - переменная, содержащая на входе строку с  начальным каталогом, а на выходе - имя выбранного каталога;
'<ЗаголовокОкна> - строка с заголовком окна;
'<Фильтр> - строка с фильтром отбора файлов (например: 'Все файлы (*.*) |*.*');
'<Расширение> - строка с расширением файла по умолчанию;
'<Таймаут> - время ожидания отклика пользователя в секундах (необязателен).

Public Function ВыбратьФайл(ТипДиалога, Optional ByRef ИмяФайла As String, Optional ByRef ИмяНачКаталога As String, Optional ЗаголовокОкна As String = "Выберите файл...", Optional Фильтр As String = "Все файлы", Optional Расширение As String = "*.*", Optional Таймаут) As Integer
 
  Dim Му_Диалог As FileDialog
  Dim ФайлПуть As String, ИмяНачКаталогаЗдесь As String
 
  If Len(ИмяНачКаталога) < 1 Then
    ИмяНачКаталогаЗдесь = CurrentProject.Path
  Else
    ИмяНачКаталогаЗдесь = ИмяНачКаталога
  End If
    If ТипДиалога = 0 Then
        Set Му_Диалог = Application.FileDialog(msoFileDialogOpen)
        Му_Диалог.ButtonName = "Открыть"
    Else
        Set Му_Диалог = Application.FileDialog(msoFileDialogSaveAs)
        Му_Диалог.ButtonName = "Сохранить"
    End If
 
  'Dim vrtSelectedItem As Variant
    With Му_Диалог
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add Фильтр, Расширение, 1
        .FilterIndex = 1
        .InitialView = msoFileDialogViewDetails
        .InitialFileName = ИмяНачКаталогаЗдесь
        .Title = ЗаголовокОкна
        ВыбратьФайл = -.Show
        If ВыбратьФайл = 1 Then
            ФайлПуть = .SelectedItems.Item(1)
            ИмяФайла = Spliting(ФайлПуть, "\")
            ИмяНачКаталога = Left(ФайлПуть, Len(ФайлПуть) - Len(ИмяФайла) - 1)
        End If
    End With
   
End Function

Sub TestВыбратьФайл()
Dim имФайла As String
    ВыбратьФайл 0, , , , "Excel", "*.xls"
End Sub

:arrow: Можно попросить поправить код, если есть "некрасивые" места? :roll:
MaxS


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 49

    TopList