Microsoft Excel

трюкиприёмырешения

VBA и макросы
01.11.2016 2387

Управление Excel из других офисных программ пакета Microsoft Office

В предыдущих статьях вы видели, как Excel может управлять другими приложениями Microsoft, такими как Word и Outlook. Но одновременно с этим другие приложения также могут быть использованы для управления Excel.

Например, вы написали макрос для Word или Access, который создает таблицу Excel, заполняет ее данными, а затем сохраняет ее. Excel не обязательно должен при этом быть запущенным, а таблица не должна присутствовать на экране. Если все же Excel запущен, то появится новая книга, но этого можно избежать, используя свойство Visible вашего виртуального приложения.

Установив его в значение False, вы можете исключить появление новой книги на экране. При запуске этого типа приложения весьма интересно бывает установить свойство Visible в значение True и понаблюдать, как данные вносятся в таблицу, как будто невидимый оператор работает за вашим компьютером.

Это может произвести сильное впечатление на стороннего наблюдателя, но нажатие какой-либо клавиши на клавиатуре может привести к закрытию вашей таблицы либо другим непредсказуемым результатам. Если вы установите свойство Visible в значение False, то пользователь не сможет навредить при выполнении этой процедуры, он даже не будет знать, что она в настоящий момент выполняется.

В качестве примера я приведу создание таблицы Excel из приложения Word. VBA работает практически одинаково во всех офисных приложениях, за исключением того, что объектные модели очень сильно отличаются в различных приложениях.

Запустив Microsoft Word, вы должны ввести код в окно VBA. Окно редактора вызывается так же, как и в Excel: с помощью нажатия сочетания клавиш Alt+F1. Оно имеет такую же функциональность, как и в Excel. Когда вы управляли различными приложениями с помощью Excel, вы сначала добавляли файлы библиотек объектов. То же самое нужно сделать и в Word, поместив ссылку на файл библиотеки объектов Excel.

Вы выбирали в меню редактора Tools › References, сейчас вам нужно сделать то же самое, только выбрать в появившемся окне Excel Object Library и поставить напротив галочку, как показано на рис. 1.

Рис. 1. Подключение файла библиотеки Excel

Рис. 1. Подключение файла библиотеки Excel

Теперь вы сделали все, чтобы написать код, управляющий Excel. Добавьте модуль (Insert › Module), в котором наберите следующий код:

1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Test_Excel()
    Dim oEapp As Excel.Application
    Set oEapp = CreateObject("Excel.Application")
    Dim oWBook As Workbook, oWSheet As Worksheet
    Set oWBook = oEapp.Workbooksþ.Add
    Set oWSheet = oWBook.Worksheets(1)
    oWSheet.Range("A1").Value = "Ваш текст" ' Не забудьте изменить
    oWBook.SaveAs ("C:\TestExcel.xlxs") ' Вы можете выбрать собственный путь сохранения
    oWBook.Close
    oEapp.Quit
    Set oWSheet = Nothing
    Set oWBook = Nothing
End Sub

Когда этот код будет запущен, будет создан файл с именем C:\TestExcel.xlxs, содержащий таблицу, в ячейке А1 которой находится строка «Ваш текст». В коде создается переменная оЕарр для хранения объекта приложения Excel. Переменные oWBook и oWSheet представляют собой книгу и лист соответственно. При этом книга добавляется в коллекцию Workbooks.

Объект Worksheet — это первый лист в коллекции Worksheets (в книге он может быть единственным).

В ячейку А1 на первом листе вносится строка «Ваш текст», затем книга сохраняется как C:\TestExcel.xlxs. После этого книга закрывается с помощью метода Close. Произойдет то же самое, если выбрать в меню Excel Файл › Закрыть. После этого закрывается само приложение, так же, как будто пользователь выбрал в меню Файл › Выход. И наконец, переменным Workbook и Worksheet присваивается значение Nothing, освобождается память компьютера от излишней информации.

Как уже было оговорено не один раз, важно правильно завершить работу приложения, присвоив значение Nothing всем объектам в VBA-коде. В противном случае память не будет освобождена и другие приложения не смогут к ней обратиться. Это может вызвать проблемы у пользователей, когда они выходят из вашего приложения, а оно завершается некорректно и переменные остаются в памяти, которая очень даже может понадобиться для других задач.


Top