Поделиться через


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

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

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