Тайны и секреты компьютера | страница 63
В Microsoft Excel набора встроенных диалогов нет, однако отобразить на экране окна открытия и сохранения файлов все же можно. Для этого служат команды "Application.GetOpenFilename" и "Application.GetSaveAsFilename". В результате выполнения команды "file = Application.GetOpenFilename" будет отображено окно открытия файла, а после выбора имя файла поместится в переменную (здесь — "file"). Команда же "rez = Application.GetSaveAsFilename" отобразит окно сохранения файла, в переменную же (здесь — rez) будет помещено True — если сохранение успешно, и False — если нет. Обе команды докускают указание параметров (например, меняющих заголовки окна и других).
Иногда возникает необходимость вызвать из макроса какое-либо диалоговое окно, но так, чтобы такой вызов ничем не отличался от «ручного», производимого через пункты меню Word. А возможно это не всегда: так, команда "Dialogs(wdDialogEditFind). Show" действительно вызывает окно поиска, но при этом в случае ввода в него фрагмента, которого в тексте нет, не отображается сообщение о безрезультатности поиска.
Тем не менее вызвать из макроса данное окно так, чтобы оно работало точь-в-точь так же, как и «обычное», можно — для этого следует использовать имеющуюся в VBA функцию SendKeys, которая передает активному окну нажатия клавиш — как если бы они были нажаты на клавиатуре. Подробнее об этой функции вы можете прочитать в Справке по VBA, а использовать ее для вызова диалогового окна можно, к примеру, так:
Sub prog()
SendKeys "^f"
End Sub
предполагая, что комбинация клавиш Ctrl+f вызывает окно «Найти», как, впрочем, устанавливается по умолчанию. Список кодов функциональных клавиш — в Справке.
Если Вы используете функцию "SendKeys", то вызванное ею окно будет вести себя абсолютно так же, как при ручном вызове. Однако помните, что если пользователь переопределит заложенную Вами в макрос комбинацию клавиш, то Ваша программа начнет работать некорректно.