Interaction.CreateObject(String, String) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает и возвращает ссылку на COM-объект.
CreateObject нельзя использовать для создания экземпляров классов в Visual Basic, если эти классы явно не предоставляются в качестве com-компонентов.
public static object CreateObject(string ProgId, string ServerName = "");
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object
Параметры
- ProgId
- String
Обязательно.
String. Идентификатор программы создаваемого объекта.
- ServerName
- String
Optional.
String. Имя сетевого сервера, где будет создан объект. Если ServerName используется пустая строка (""), используется локальный компьютер.
Возвращаемое значение
Создает и возвращает ссылку на COM-объект.
CreateObject нельзя использовать для создания экземпляров классов в Visual Basic, если эти классы явно не предоставляются в качестве com-компонентов.
Исключения
Сервер недоступен
Объект указанного типа не существует.
Примеры
В следующем примере функция CreateObject используется для создания листа Microsoft Excel и сохранения листа в файле. Чтобы использовать этот пример, Excel необходимо установить на компьютере, на котором выполняется эта программа. Кроме того, необходимо добавить ссылку на библиотеку типов из диалогового окна COM в диалоговом окне Add Reference в меню Project. Имя библиотеки типов зависит от версии Excel, установленной на компьютере. Например, библиотека типов для Microsoft Excel 2002 называется Microsoft Excel 10.0 Object Library.
Sub TestExcel()
Dim xlApp As Microsoft.Office.Interop.Excel.Application
Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet
xlApp = CType(CreateObject("Excel.Application"),
Microsoft.Office.Interop.Excel.Application)
xlBook = CType(xlApp.Workbooks.Add,
Microsoft.Office.Interop.Excel.Workbook)
xlSheet = CType(xlBook.Worksheets(1),
Microsoft.Office.Interop.Excel.Worksheet)
' The following statement puts text in the second row of the sheet.
xlSheet.Cells(2, 2) = "This is column B row 2"
' The following statement shows the sheet.
xlSheet.Application.Visible = True
' The following statement saves the sheet to the C:\Test.xls directory.
xlSheet.SaveAs("C:\Test.xls")
' Optionally, you can call xlApp.Quit to close the workbook.
End Sub
Комментарии
Чтобы создать экземпляр COM-компонента, назначьте объект, возвращаемый CreateObject переменной объекта:
Sub CreateADODB()
Dim adoApp As Object
adoApp = CreateObject("ADODB.Connection")
End Sub
Тип переменной объекта, используемой для хранения возвращаемого объекта, может повлиять на производительность приложения. Объявление переменной объекта с As Object помощью предложения создает переменную, которая может содержать ссылку на объект любого типа. Однако доступ к объекту через данную переменную ограничен, то есть привязка возникает при запуске программы. Существует множество причин, по которым следует избегать поздней привязки, включая более низкую производительность приложения.
Вы можете создать переменную объекта, которая приводит к ранней привязке, то есть привязку при компиляции программы. Для этого добавьте ссылку на библиотеку типов для объекта из диалогового окна COM в диалоговом окне Add Reference в меню Project. Затем объявите переменную объекта определенного типа. В большинстве случаев более эффективно использовать Dim инструкцию и основную сборку взаимодействия для создания объектов, чем использовать функцию CreateObject .
Взаимодействие с неуправляемыми кодом
Другая проблема заключается в том, что COM-объекты используют неуправляемый код — код без преимуществ среды CLR. Существует справедливая степень сложности, связанная с сочетанием управляемого кода Visual Basic с неуправляемыми кодом из COM. При добавлении ссылки на COM-объект Visual Basic выполняется поиск основной сборки взаимодействия (PIA) для этой библиотеки; если он находит его, он использует его. Если он не находит PIA, он создает сборку взаимодействия, содержащую классы локальной совместимости для каждого класса в библиотеке COM. Дополнительные сведения см. в статье о взаимодействии COM в приложениях .NET Framework.
Обычно следует использовать строго привязанные объекты и основные сборки взаимодействия по возможности. В приведенных ниже примерах используется функция CreateObject с объектами Microsoft Office только для демонстрационных целей. Однако эти объекты проще использовать и надежнее при использовании с соответствующей основной сборкой взаимодействия.
Создание объекта на удаленном компьютере
Объект можно создать на удаленном сетевом компьютере, передав имя компьютера ServerName аргументу CreateObject функции. Это имя совпадает с частью имени общей папки: для общей папки "\\MyServer\Public" ServerName — MyServer\Public.
Note
Дополнительные сведения о том, как сделать приложение доступным на удаленном сетевом компьютере, см. в документации com (см. Microsoft Developer Network). Возможно, потребуется добавить раздел реестра для приложения.
Следующий код возвращает номер версии экземпляра Excel, работающего на удаленном компьютере с именем MyServer:
Sub CreateRemoteExcelObj()
Dim xlApp As Object
' Replace string "\\MyServer" with name of the remote computer.
xlApp = CreateObject("Excel.Application", "\\MyServer")
MsgBox(xlApp.Version)
End Sub
Если имя удаленного сервера неверно или недоступно, возникает ошибка во время выполнения.
Note
Используется CreateObject , если текущий экземпляр объекта отсутствует. Если экземпляр объекта уже запущен, запускается новый экземпляр и создается объект указанного типа. Чтобы использовать текущий экземпляр или запустить приложение и загрузить файл, используйте функцию GetObject . Если объект зарегистрировал себя как объект с одним экземпляром, создается только один экземпляр объекта, независимо от того, сколько раз CreateObject выполняется.
Создание объектов Платформы
Функцию CreateObject можно использовать только для создания COM-объекта. Хотя нет точного механизма создания объекта .NET Framework, Activator в пространстве имен System содержит методы для создания локальных или удаленных объектов. В частности, CreateInstance метод или CreateInstanceFrom метод могут оказаться полезными.
Important
Для CreateObject функции требуется разрешение неуправляемого кода, которое может повлиять на его выполнение в ситуациях с частичным доверием. Дополнительные сведения см. в разделе SecurityPermission " Разрешения доступа к коду".