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 и Разрешения на доступ к коду.

Применяется к

См. также раздел