Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.224.39.74] |
|
Сообщ.
#1
,
|
|
|
EXCEL
Существующие методы GetOpenFileName и GetSaveAsFileName предоставляют относительно широкие возможности по настройке диалоговых окон: Задать имя файла по умолчанию(InitialFileName), определить список фильтров(FileFilter), задать фильтр по умолчанию (FilterIndex), изменить заголовок диалогового окна (Title), задать множественный выбор файлов (MultiSelect ) WORD97/2000 Свойство Dialogs не предоставляет того набора настроек, который возможен при помощи вышеописанных методов EXCEL, хотя, имя файла по умолчанию указать все-таки можно: With Dialogs(wdDialogFileOpen) .Name = "newname" .Show End With ACCESS97/2000 Стандартных методов отображения диалоговых окон открытия/сохранения документа не обнаружил VISIO Стандартных методов отображения диалоговых окон открытия/сохранения документа не обнаружил WORD/EXCEL/ACCESS/VISIO 2002 (XP) Для работы класса в ACCESS/VISIO не забудьте подключить mso.dll Пример вызова диалогового окна SaveAs для Access: Set dlgSaveAs = Application.FileDialog(2) B OfficeXP появился класс FileDialog, имеющий в своем арсенале достаточно обширный набор свойств - кроме вышеописанных появились: DialogType (тип окна->сохранение, открытие, показ папок, файлов) InitialView (вид окна->список, иконки, таблица, предпросмотр) ButtonName (изменение стандартной надписи кнопки) Dim FD As FileDialog 'определяем внешний вид диалогового окна Set FD = Application.FileDialog(msoFileDialogOpen) 'или используем следующий синтаксис для выбора ПАПКИ 'Set FD=Application.FileDialog(msoFileDialogFolderPicker) FD.Title = " Загрузка некоего документа Ж:)" FD.Filters.Add "Все файлы", "*.*" FD.ButtonName = "Загрузить!" FD.AllowMultiSelect = False 'если что-то выбрано If FD.Show = -1 Then 'заменяем текущий текст выбранным доком ActiveDocument.Content.InsertFile FD.SelectedItems(1) End If ИСПОЛЬЗОВАНИЕ МЕТОДОВ ИЗ COMDLG32.DLL и SHELL32.DLL Измененный под VBA пример использования API-функции GetOpenFileName из API-GUIDE 3.7 : Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (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 Sub Form_Initialize() 'KPD-Team 1998 'URL: http://www.allapi.net/ 'E-Mail: KPDTeam@Allapi.net Dim OFName As OPENFILENAME OFName.lStructSize = Len(OFName) 'Select a filter OFName.lpstrFilter = "Text Files (*.txt)" + Chr$(0) + "*.txt" + Chr$(0) + "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0) 'create a buffer for the file OFName.lpstrFile = Space$(254) 'set the maximum length of a returned file OFName.nMaxFile = 255 'Create a buffer for the file title OFName.lpstrFileTitle = Space$(254) 'Set the maximum length of a returned file title OFName.nMaxFileTitle = 255 'Set the initial directory OFName.lpstrInitialDir = "C:\" 'Set the title OFName.lpstrTitle = "Open File - KPD-Team 1998" 'No flags OFName.flags = 0 'Show the 'Open File'-dialog If GetOpenFileName(OFName) Then MsgBox "File to Open: " + Trim$(OFName.lpstrFile) Else MsgBox "Cancel was pressed" End If End Sub Так же есть замечательный класс CommonDlg (см. прикрепленный архив) от Access 2002 Desktop Developer's Handbook Кроме настройки диалога открытия/сохранения файлов, предоставляет возможность выбора шрифта и цвета Пример использования: Dim Dlg As CommonDlg Set Dlg= New CommonDlg Dlg.DialogTitle = "Сохранение документа" Dlg.InitDir = Options.DefaultFilePath(wdDocumentsPath) Dlg.Filter = "MS Word (*.doc)|*.doc|RichTextFormat (*.rtf)|*.rtf|" & _ "Текст(*.txt)|*.txt|Гипертекст (*.html)|*.htm*|Текст DOS Dos (*.txt)|*.txt" Dlg.ShowSave 'так же доступны методы: 'открытие док ' Dlg.ShowOpen 'выбор фонта ' Dlg.ShowFont 'выбор цвета ' Dlg.ShowColor Упрощенный вариант – используем WSH Используем метод BrowseForFolder объекта Application: Set wshell = CreateObject("Shell.Application") 'игнорируем ошибку, если нажата Cancel On Error Resume Next Set iPath = wshell.BrowseForFolder(&H0, "Выберите папку, в которой находятся результаты исследований:", &H1, "c:\Users") If Not iPath Is Nothing Then FolderPath = iPath.Self.Path 'вариант для WINNT 'FolderPath = iPath.Items.Item.Path 'универсальный вариант для WIN9х/NT Else 'нажата Cancel Endif Краткое описание параметров функции BrowseForFolder Первый параметр – передает диалоговому окну дескриптор окна, всегда равен 0 Второй параметр – строка, выводимая в диалоговом окне под заголовком Третий параметр – 32-разрядный флаг, задаем свойства диалогового окна Четвертый параметр (опционально) – папка по умолчанию. Здесь вы можете указать как одну из констант (см. ниже), так и путь к желаемой папке (см. пример выше), в этом случае указанная папка будет являться корневой в отображаемом диалоговом окне. Константы для третьего параметра &Н0001 - Можно выбирать лишь папки файловой системы. Если этот разряд установлен, то при выборе папки, не принадлежащей к файловой системе (например, Control Panel), кнопка OK будет недоступна. &Н0002 - Во время поиска компьютера пользователю запрещено просматривать папки ниже этого домена в пределах сети. &Н0004 - Под диалоговым окном появляется область для вывода сведений о состоянии (однако я не смог найти способ вывода состояния). &Н0008 - Возвращает только каталоги, расположенные в иерархии файловой системы выше данного. &Н0010 - Выводит в диалоговом окне поле ввода, в котором пользователь может задать имя элемента. &Н0020 - Проверяет имя, набранное в поле ввода. &Н1000 - Позволяет пользователю просматривать сетевую ветвь пространства имен оболочки в поисках компьютеров. &Н2000 - Позволяет пользователю просматривать сетевую ветвь пространства имен оболочки в поисках принтеров. &Н4000 - Позволяет искать любые элементы. Константы для четвертого параметра 0 - Корневым каталогом является (виртуальная) папка Desktop. При использовании этой константы с &H0001 для третьего параметра возникают проблемы с кнопкой ОК. 1 - Корневым каталогом является Internet Explorer. 2 - Корневым каталогом является папка Programs из меню Start. 3 - Корневым каталогом является папка Control Panel. У третьего параметра должно быть значение &Н4000 (поиск любых элементов). 4 - Корневым каталогом является папка Printers. У третьего параметра должно быть значение &Н4000 (поиск любых элементов). 5 - Корневым каталогом является папка Documents из меню Start. 6 - Корневым каталогом является папка Favorites из меню Start. 7 - Корневым каталогом является папка Startup из меню Start. У третьего параметра должно быть значение &Н4000 (поиск любых элементов). 8 - Корневым каталогом является папка Recent. У третьего параметра должно быть значение &Н4000 (поиск любых элементов). 9 - Корневым каталогом является папка SendTo. У третьего параметра должно быть значение &Н4000 (поиск любых элементов). 10 - Корневым каталогом является папка Recycle Bin. У третьего параметра должно быть значение &Н4000 (поиск любых элементов). 11 - Корневым каталогом является папка меню Start. 16 - Корневым каталогом является (физическая) папка Desktop. 17 - Корневым каталогом является папка My Computer. Прикреплённый файлdlg_code.zip (93.42 Кбайт, скачиваний: 1037) |