Application.FileDialog

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

afg
Сообщения: 74
Зарегистрирован: 13 мар 2007, 15:26

25 апр 2007, 11:41

Народ!
У меня следующий вопрос. Я хочу, чтобы в новой программе после компилляции работало диалоговое окно msoFileDialogOpen. Если я пишу
With Application.FileDialog(msoFileDialogOpen), то программа выдает ошибку msoFileDialogOpen - неизвестная переменная. Если пишу явно
With Application.FileDialog(Application.FileDialog.DialogType = msoFileDialogOpen), то
выдает ту же ошибку для объекта FileDialog. Как ее исправить так, чтобы можно было импортировать модуль с данным кодом в новую базу данных? :confused:
Pavel55
Сообщения: 405
Зарегистрирован: 20 окт 2006, 11:40
Откуда: Moscow

25 апр 2007, 11:59

Может так?

Код: Выделить всё

Sub Макрос1()
    Dim iOpen As Boolean
    iOpen = Application.Dialogs(msoFileDialogOpen).Show
    If iOpen = True Then
        MsgBox "Вы открыли: " & ActiveWorkbook.Name, , ""
    Else
        MsgBox "Вы не выбрали нужную рабочую книгу", , ""
    End If
End Sub
afg
Сообщения: 74
Зарегистрирован: 13 мар 2007, 15:26

25 апр 2007, 12:07

А в Access Application.Dialogs нет. Как быть?
The Okk
Сообщения: 5
Зарегистрирован: 24 апр 2007, 13:35

25 апр 2007, 12:16

Application.FileDialog 1
Teslenko_EA
Сообщения: 520
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

25 апр 2007, 18:30

Здравствуйте afg.
В Access диалоги можно использовать установив в проекте ссылку на библиотеку
Microsoft Common Dialog Control 6.0 (SP3) (файл comdlg.ocx)
далее на форме размещаем элемент управления (контрол) Microsoft Common Dialog Control, version 6.0 (он появится в списке "Другие элементы" панели инструментов "Конструктор форм"). Для использования нужен подобный код:

Код: Выделить всё

Private Sub Кнопка0_Click()
    DialogOpen
End Sub
Function DialogOpen() As String
    CommonDialog1.Flags = cdlOFNFileMustExist Or cdlOFNHideReadOnly
    CommonDialog1.FileName = "*.mdb"
    CommonDialog1.Action = 1 'CommonDialog1.ShowOpen
    DialogOpen = CommonDialog1.FileName
End Function
использование диалогов обеспечивает в данном случае библиотека comdlg.ocx
и при распространении Вашего приложения использующего данную библиотеку, позаботьтесь о том что бы у пользователей она была установлена.
Удачи.
Евгений.
afg
Сообщения: 74
Зарегистрирован: 13 мар 2007, 15:26

25 апр 2007, 18:52

Teslenko_EA писал(а):Здравствуйте afg.
В Access диалоги можно использовать установив в проекте ссылку на библиотеку
Microsoft Common Dialog Control 6.0 (SP3) (файл comdlg.ocx)
далее на форме размещаем элемент управления (контрол) Microsoft Common Dialog Control, version 6.0 (он появится в списке "Другие элементы" панели инструментов "Конструктор форм").
Удачи.
Евгений.
А как быть со стандартными окнами Windows? Они же в принципе должны быть доступны...
Teslenko_EA
Сообщения: 520
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

25 апр 2007, 19:06

afg, и снова здравствуйте.
С применением библиотеки используются "стандартные" диалоги Windows.
единсвенный (нр немаловажный) плюс - Вам не придется писать "многостраничный" код для получения того же результата.
Но если Вам интересно дпя сравнения прилагаю.
Удачи.
Евгений
P.S.
и вообще все ActiveX'ы служат для облегчения "программерской работы" :)
Аватара пользователя
Aent
Сообщения: 1108
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

26 апр 2007, 15:19

Господа, а почему бы вам не воспользоваться стандартным объектом FileDialog,
поддерживаемым MS OFFICE ? Не надо никаких дополнительных ActiveX. В проекте
должна быть стандартная ссылка на Microsoft Office 11.0 Object Library ( для 2003)
Цитирую Help

Provides file dialog box functionality similar to the functionality of the standard Open and Save dialog boxes found in Microsoft Office applications. With these dialog boxes, 'users of your solutions can easily specify the files and folders that your solution should use.

Using the FileDialog object
Use the FileDialog property to return a FileDialog object. The FileDialog property is located in each individual Office application's Application object. The property takes a single argument, DialogType, that determines the type of FileDialog object that the property returns. There are four types of FileDialog object:

Open dialog box - lets users select one or more files that you can then open in the host application using the Execute method.
SaveAs dialog box - lets users select a single file that you can then save the current file as using the Execute method.
File Picker dialog box - lets users select one or more files. The file paths that the user selects are captured in the FileDialogSelectedItems collection.
Folder Picker dialog box - lets users select a path. The path that the user selects is captured in the FileDialogSelectedItems collection.
Each host application can only instantiate a single instance of the FileDialog object. Therefore, many of the properties of the FileDialog object persist even when you create multiple FileDialog objects. Therefore, make sure that you've set all of the properties appropriately for your purpose before you display the dialog box.

In order to display a file dialog box using the FileDialog object, you must use the Show method. Once a dialog box is displayed, no code will execute until the user dismisses the dialog box. The following example creates and displays a File Picker dialog box and then displays each selected file in a message box.

Код: Выделить всё

Sub Main()

    'Declare a variable as a FileDialog object.
    Dim fd As FileDialog

    'Create a FileDialog object as a File Picker dialog box.
    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    'Declare a variable to contain the path
    'of each selected item. Even though the path is a String,
    'the variable must be a Variant because For Each...Next
    'routines only work with Variants and Objects.
    Dim vrtSelectedItem As Variant

    'Use a With...End With block to reference the FileDialog object.
    With fd

        'Use the Show method to display the File Picker dialog box and return the user's action.
        'The user pressed the action button.
        If .Show = -1 Then

            'Step through each string in the FileDialogSelectedItems collection.
            For Each vrtSelectedItem In .SelectedItems

                'vrtSelectedItem is a String that contains the path of each selected item.
                'You can use any file I/O functions that you want to work with this path.
                'This example simply displays the path in a message box.
                MsgBox "The path is: " & vrtSelectedItem

            Next vrtSelectedItem
        'The user pressed Cancel.
        Else
        End If
    End With

    'Set the object variable to Nothing.
    Set fd = Nothing

End Sub

P.S Object Browser - великая сила ;)
Аватара пользователя
Aent
Сообщения: 1108
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

27 апр 2007, 03:07

Несколько непонятна Ваша проблема. В Access (по крайней мере в 2003)
FileDialog есть. Пример из Help'а Access 2003:

Код: Выделить всё

'This example displays the Open dialog box and allows a user to select multiple files to open.

Dim dlgOpen As FileDialog

Set dlgOpen = Application.FileDialog( _
    FileDialogType:=msoFileDialogOpen)

With dlgOpen
    .AllowMultiSelect = True
    .Show
End With
afg
Сообщения: 74
Зарегистрирован: 13 мар 2007, 15:26

27 апр 2007, 09:52

Aent писал(а):Несколько непонятна Ваша проблема. В Access (по крайней мере в 2003)
FileDialog есть. Пример из Help'а Access 2003:
Согласен, что есть. У меня он не запускается. Как обеспечить вызов библиотеки (и какой) чтобы его запустить?
Ответить