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