Interaction.CreateObject(String, String) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает и возвращает ссылку на COM-объект. Функция CreateObject
не может использоваться для создания экземпляров классов в Visual Basic, если эти классы явным образом не представлены как COM-компоненты.
public static object CreateObject (string ProgId, string? ServerName = "");
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object CreateObject (string ProgId, string? ServerName = "");
public static object CreateObject (string ProgId, string ServerName = "");
static member CreateObject : string * string -> obj
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object
Параметры
- ProgId
- String
Обязательный.
String
. Программный идентификатор создаваемого объекта.
- ServerName
- String
Необязательный элемент.
String
. Имя сетевого сервера, на котором будет создан объект. Если параметр ServerName
равен пустой строке (""), то используется локальный компьютер.
Возвращаемое значение
Создает и возвращает ссылку на COM-объект. Функция CreateObject
не может использоваться для создания экземпляров классов в Visual Basic, если эти классы явным образом не представлены как COM-компоненты.
- Атрибуты
Исключения
Сервер недоступен.
Объект указанного типа не существует.
Примеры
В следующем примере функция используется CreateObject
для создания листа Microsoft Excel и сохранения листа в файл. Для использования этого примера необходимо установить Excel на компьютере, где выполняется эта программа. Кроме того, необходимо добавить ссылку на библиотеку типов на вкладке COM диалогового окна Добавление ссылки в меню Проект . Имя библиотеки типов зависит от версии Excel, установленной на компьютере. Например, библиотека типов для Microsoft Excel 2002 называется Библиотека объектов Microsoft Excel 10.0.
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 диалогового окна Добавление ссылки в меню Проект . Затем объявите объектную переменную определенного типа объекта. В большинстве случаев эффективнее использовать 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".
Примечание
Дополнительные сведения о том, как сделать приложение доступным на удаленном сетевом компьютере, см. в документации по 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
Если имя удаленного сервера неверно или оно недоступно, возникает ошибка во время выполнения.
Примечание
Используйте, CreateObject
если нет текущего экземпляра объекта . Если экземпляр объекта уже запущен, запускается новый экземпляр и создается объект указанного типа. Чтобы использовать текущий экземпляр или запустить приложение и загрузить файл, используйте функцию GetObject
. Если объект зарегистрировал себя как объект с одним экземпляром, создается только один экземпляр объекта независимо от того, сколько раз CreateObject
выполняется.
Создание объектов платформы
Функцию CreateObject
можно использовать только для создания COM-объекта. Хотя нет точного эквивалентного механизма для создания объекта .NET Framework, Activator в System пространстве имен содержит методы для создания локальных или удаленных объектов. В частности, CreateInstance может оказаться полезным метод или CreateInstanceFrom метод .
Важно!
Для CreateObject
функции требуется разрешение неуправляемого кода, что может повлиять на ее выполнение в ситуациях с частичным доверием. Дополнительные сведения см. в разделах SecurityPermission и Разрешения на доступ к коду.