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 и Разрешения на доступ к коду.
Применяется к
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по