Для доступа к объектам Automation приложения-сервера используются функции: CreateObject и GetObject.
1. Функция CreateObject возвращает и создает ссылку на объект ActiveX.
CreateObject (Class, [Servername])
Здесь:
· class — имя объекта Automation (Word.Application);
· servername — параметр используется только при создании объекта Automation в сети и устанавливает имя сервера, где будет создан объект Automation.
2. Функция GetObject возвращает и создает ссылку на объект ActiveX, сохраненный в файле.
GetObject([Pathname] [, Class])
Здесь:
Þ Pathname — полное имя файла; если параметр опушен, то необходимо указать значение параметра class;
Þ class — имя объекта Automation.
Функция GetObject подобна функции CreateObject. Но есть и некоторое различие между ними. Функцию GetObject можно использовать для доступа к существующим документам, хранящимся в файлах.
Функцию GetObject можно также применять. для доступа к объекту Application любого уже запушенного приложения Microsoft Office. Для этого надо вызвать функцию GetObject без первого параметра.
Такой способ доступа к объекту Application любого уже запущенного приложения MS Office применяется, когда нет необходимости в запуске еще одного экземпляра приложения, что происходит при работе функции CreateObject.
Позднее связывание происходит, когда тип переменной, которая будет представлять собой объект Automation, указывается как object. Тип object позволяет создавать объекты любой природы. В этом смысле он подобен типу variant. Такая чрезмерная общность определения переменной понижает производительность приложения.
Для достижения наилучшей производительности приложения необходимо определить конкретный тип для переменной, которая будет представлять собой объект Automation. Например, если используется MS Excel, то надо установить тип переменной Excel.Application.
Второй подход называется ранним связыванием и происходит на этапе компиляции. При раннем связывании, чтобы определить переменную конкретного класса, перед написанием кода необходимо сослаться на библиотеку объектов серверов Automation. Для этого в редакторе VBA выберите команду Tools|References. В появившемся диалоговом окне References в списке Available References установите флажок Micrisoft Excel 11.0 Object Library.
Листинг 2. Открытие существующего Word-документа
Sub OpenWordDocument()
Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim FileName As String
FileName = "C:\Test.doc"
Set objWord = New Word.Application
Set objDoc = objWord.Documents.Open(FileName)
objWord.Visible = True
MsgBox objDoc.Path & "\" & objDoc.Name
objDoc.Close False
objWord.Quit
Set objDoc = Nothing
Set appWord = Nothing
End Sub
Листинг 3. Создание документа
Sub CreateWordDocument()
On Error GoTo errorHandler
Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim objRgn As Word.Range
Set objWord = New Word.Application
With objWord
.Visible = True
.WindowState = wdWindowStateMaximize
End With
Set objDoc = objWord.Documents.Add
Set objRgn = objDoc.Words(1)
With objRgn
.Text = "Hello, Automation World!"
.Font.Name = "Comic Sans MS"
.Font.Size = 12
.Font.ColorIndex = wdBlue
.Bold = True
End With
errorHandler:
Set objWord = Nothing
Set objDoc = Nothing
Set objRgn = Nothing
End Sub
Объекты и методы библиотеки Microsoft Scripting Runtime Library для работы с файловой системой.
Работа с файловой системой опирается на библиотеку Microsoft Scripting Runtime Library (файл Scrrun.dll): для использования этой библиотеки надо установить ссылку на нее в диалоговом окне Tools – References.
VBA позволяет обрабатывать файлы, работать с дисками, файловой системой средствами объектной файловой системы (File System Object Model, FSO).
Основными объектами FSO являются:
Þ FilesSystemObject
Þ File
Þ Drive (позволяет собрать разнообразную информацию о диске)
Þ TextStream
Þ Folder
Þ Dictionary
Создание объекта FileSystemObject с неявной ссылкой на Microsoft Scripting Runtime (без подлючения библиотеки, недостатком данного подхода является то, что переменные объявляются с типом Variant и поэтому в редакторе кода не будут отображаться в списке свойства и методы соответствующих объектов).
Sub CreateFileSystemObject1()
Dim fs As Variant
Set fs = CreateObject("Scripting.FileSystemObject")
Dim ts As Variant
Set ts = fs.CreateTextFile("c:\testfile1.txt", True)
ts.WriteLine ("Hello, FSO!")
ts.Close
End Sub