Подготовка:
Откройте Word и создайте новый документ (обычным, не программным способом). Затем нажмите клавиши <A1t>+<F11>, чтобы открыть редактор Visual Basic, в окне Project Explorer щелкните правой кнопкой мыши по контейнеру вашего документа (он должен называться Project (Документ1)) и в контекстном меню выберите Insert | Module. Будет создан новый стандартный модуль. При помощи меню Insert | Procedure создайте в нем новую процедуру с именем wsh().
ЗАДАНИЕ:
1. Добавьте при помощи меню Tools | References в проект этого документа ссылку на библиотеку Windows Script Host Object Model.
2. В процедуре wsh() создайте программные объекты WScript. Network и WScript. Shell и просмотрите свойства и методы этих объектов.
3. Добавьте в процедуру wsh() код, который бы:
• принимал в текстовые переменные и печатал в документе Word значения свойств ComputerName, UserName И UserDomain объекта WScript.Network;
Код для вывода текстовой переменной в Word может выглядеть так:
ThisDocument.Activate
Selection.TypeText Text:=(текстовая_переменная)
• вызывал метод Run о объекта WScript. shell и передавал ему единственный текстовый параметр со значением "calc";
• использовал свойство Environment объекта WScript.shell для создания коллекции текстовых переменных с информацией о переменных окружения;
• печатал в документе Word все значения текстовых переменных из этой коллекции.
Для переменных, которые вы будете Variant использовать для создаваемой коллекции и ее элементов, следует использовать тип.
Ответ к заданию 4
Итоговый код процедуры wsh () может быть таким:
Public Sub WSH()
Dim oNetwork As WshNetwork
Dim oShell As WshShell
Dim sComputer As String
Dim sDomain As String
Dim sUser As String
Dim oColl As Variant
Dim sEnv As Variant
‘ Создаем объекты
Set oNetwork = CreateObject("WScript.Network")
Set oShell = CreateObject("Wscript.Shell")
'Получаем и печатаем значения свойств объекта Wscript.Network
|
sComputer = oNetwork.ComputerName
sDomain = oNetwork.UserDomain
sUser = oNetwork.UserName
ThisDocument.Activate
Selection.TypeText Text:=(sComputer & vbCrLf & sDomain & vbCrLf &_
sUser & vbCrLf & vbCrLf)
'Вызываем метод Run объекта
Wscript.Shell oShell.Run "Calc"
'Получаем коллекцию переменных окружения
Set oColl = oShell.Environment
'И выводим каждый элемент этой коллекции
For Each sEnv In oColl
Selection.TypeText Text:=(sEnv s vbCrLf)
Next
'Правило хорошего тона — удаляем созданные объекты из памяти
Set oNetwork = Nothing
Set oShell = Nothing
End Sub
Формы, элементы управления и события
5.1. Для чего нужны формы
С самыми простыми возможностями организации взаимодействия с пользователем (применение встроенных функций MsgBox() и InputBoxo()) мы уже ознакомились. Однако, конечно же, возможностей этих функций не всегда хватает. В этой главе речь пойдет о том, как создать графический интерфейс своего приложения с помощью VBA.
Чаще всего для предоставления пользователю графического интерфейса используются формы VBA. В принципе, многие элементы управления можно вставлять непосредственно на страницу документа (для этого используются панели инструментов Формы и Элементы управления), однако классический способ — это применение формы. Вне зависимости от того, используется ли форма или элементы управления размещаются напрямую в документе, набор элементов управления и приемы работы с ними одинаковы.
Как выглядит применение форм в приложении VBA? Обычно форма запускается при открытии пользователем документа. Пользователь выполняет на форме какие-то действия по вводу или выбору информации (например, выбирает значения в раскрывающемся списке, устанавливает значения для флажков и переключателей и т. п.), а потом, как правило, нажимает кнопку на этой форме, и введенная им информация передается в базу данных, отправляется по электронной почте, записывается в файл для распечатки и т. д.
5.2. Создание форм