VBA ПолучитьОбъект

Функция Excel VBA GETOBJECT

Мы можем использовать функцию GetObject в VBA в MS Excel, чтобы получить доступ к объекту ActiveX из файла Excel, а затем присвоить объект объектной переменной. Чтобы использовать технологию OLE (связывание и внедрение объектов) или COM (модуль составных объектов) для управления любым приложением Microsoft, таким как MS Word, MS Outlook, MS PowerPoint, Internet Explorer и т. д., мы можем использовать функцию VBA GETOBJECT.

Мы используем функцию CreateObject для создания объекта, а функция GETOBJECT возвращает ссылку на объект.

VBA-GETOBJECT

Вы можете использовать это изображение на своем веб-сайте, в шаблонах и т. д. Пожалуйста, предоставьте нам ссылку на авторствоКак предоставить атрибуцию?Ссылка на статью должна быть гиперссылкой
Например:
Источник: VBA GetObject (wallstreetmojo.com)

Синтаксис функции GETOBJECT

Синтаксис GetObject VBA

Функция ПОЛУЧИТЬ ОБЪЕКТ имеет следующие именованные аргументы:

  1. Путь: Нам нужно указать полный путь и имя файла, содержащего объект для извлечения. Это необязательный аргумент, на самом деле оба аргумента в функции GetObject являются необязательными, но если «путь» опущен, требуется второй аргумент «класс».
  2. Класс: Это также необязательный аргумент, как указано ранее. Это принимает строку, представляющую класс объекта.

Мы используем синтаксис appname.objecttype для указания аргумента class.

  1. Имя приложения: Нам нужно указать имя приложения, которое будет предоставлять объект.
  2. Тип объекта: Мы указываем тип класса объекта для создания.

Пример функции Excel VBA GETOBJECT

Вы можете скачать этот шаблон VBA GetObject здесь — Шаблон GetObject VBA

Предположим, у нас есть текстовый документ, содержащий 3 таблицы.

Пример VBA GetObject 1
Пример VBA GetObject 1-1

Мы хотим написать код VBAНапишите код VBAКод VBA относится к набору инструкций, написанных пользователем на языке программирования приложений Visual Basic в редакторе Visual Basic (VBE) для выполнения определенной задачи.читать далее это будет импортировать все таблицы в документе на лист Excel. Чтобы сделать то же самое, нам нужно будет использовать СоздатьОбъектСоздатьОбъектCreateObject, как следует из названия, — это функция, которая создаст вышеупомянутый объект из Excel VBA. Когда вы создаете объект с помощью функции CreateObject, это называется поздним связыванием.читать далее и функция GetObject в VBA.

Шаги будут такими:

  • Создайте файл Excel и сохраните файл с расширением .xlsm. расширение ExcelРасширение ExcelРасширения Excel представляют собой формат файла. Это помогает пользователю сохранять различные типы файлов Excel в различных форматах. Например, .xlsx используется для простых данных, а XLSM используется для хранения кода VBA.читать далее (Excel Macro-Enabled Workbook), так как нам нужно будет запустить код VBA (макрос).
  • Откройте базовый визуальный редактор с помощью сочетания клавиш (Alt+F11) или с помощью команды «Visual Basic» в группе «Код» в Вкладка «Разработчик» в ExcelВкладка «Разработчик» в ExcelВключение вкладки разработчика в Excel может помочь пользователю выполнять различные функции для VBA, макросов и надстроек, таких как импорт и экспорт XML, разработка форм и т. д. Эта вкладка по умолчанию отключена в Excel; таким образом, пользователю необходимо сначала включить его в меню параметров.читать далее.
  • Дважды щелкните по «Эта рабочая книга» в левой части редактора VBA«Эта рабочая книга» в левой части редактора VBAVBA ThisWorkbook относится к рабочей книге, в которой пользователи в настоящее время пишут код для выполнения всех задач в текущей рабочей книге. При этом не имеет значения, какая рабочая книга активна, и требуется только ссылка на рабочую книгу, в которой пользователи пишут код.читать далее и выберите «Рабочая книга» из списка, показанного после этого в верхней части экрана.
Пример VBA GetObject 1-2
  • Выберите «Открыть» из списка.
Пример VBA GetObject 1-3
  • Теперь нам нужно написать код между этими двумя строками.
Пример VBA GetObject 1-5
  • Во-первых, мы объявим переменные для хранения объектов (объект MS Word Document и MS Word Application) и «String Variable» для хранения имени документа, из которого нам нужно извлечь таблицы.
Пример VBA GetObject 1-4
  • Для обработки ошибок мы добавим один оператор. Этот оператор указывает программе VBA игнорировать ошибку и возобновить выполнение со следующей строки кода. «На Ошибка Продолжить дальшеОшибка Продолжить дальшеОператор VBA On Error Resume — это аспект обработки ошибок, используемый для игнорирования строки кода, из-за которой возникла ошибка, и продолжения со следующей строки сразу после строки кода с ошибкой.читать далее” не исправляет ошибки времени выполнения, а просто означает, что выполнение программы продолжится со строки, следующей за строкой, вызвавшей ошибку.
Пример VBA GetObject 1-6
  • Теперь мы будем использовать Функция GetObject чтобы получить доступ к текущему экземпляру объекта приложения Word.
Пример VBA GetObject 1-7
  • Если в случае, если нет текущего экземпляра приложения MS Word, или компонент ActiveX не может создать объект или вернуть ссылку на этот объект, то возникает ошибка 429. Для этого мы добавим ниже две строки в коде. После обработки ошибки нам нужно создать экземпляр объекта приложения MS Word с помощью Функция CreateObject.
Пример VBA GetObject 1-8
  • Чтобы сделать приложение MS Word видимым, мы изменим свойство visible «WdApp» Возражать ИСТИННЫЙ.
Пример VBA GetObject 1-9
  • Нам нужно найти местоположение и имя файла документа Word, из которого мы хотим импортировать таблицы в лист Excel, и назначить то же самое для «strDocName» Чтобы найти имя и местоположение, и мы можем проверить характеристики файла.

Чтобы открыть ‘Характеристики’ диалоговое окно, просто выберите файл и нажмите «Альт+Ввод».

Пример VBA GetObject 1-10
Пример получения объекта 1-11
  • Если файл не существует в указанном расположении, код возвращает сообщение о том, что «файл Marks Details не найден в пути к папке». Заголовок будет «Извините, такого имени документа не существует».
Получить объект Пример 1-12
  • Теперь нам нужно активировать приложение MS Word и присвоить переменной ‘вддок’ с текстовым документом, имеющим имя файла, хранящееся в ‘strDocName.’
Получить объект Пример 1-13
  • Если файл еще не открыт, нам нужно открыть документ и активировать приложение.
Получить объект Пример 1-14
  • После активации документа Word нам нужно получить доступ к таблицам в документе. Чтобы сделать то же самое, мы создадим несколько переменных.
Получить объект Пример 1-15

Стол — целочисленная переменная, в которой будет храниться количество таблиц в документе.

строкаWd это длинная переменная, в которой будет храниться количество строк в конкретной таблице.

холод — это длинная переменная, в которой будет храниться количество столбцов в конкретной таблице.

  • Нам нужно подсчитать количество таблиц в документе, и если в документе есть заметные, то мы покажем пользователю окно сообщения о том, что «В документе Word таблицы не найдены».
Получить объект Пример 1-16
  • Чтобы получить доступ к таблицам в документе и записать содержимое на листе Excel, мы запустить цикл VBA «For»Запустите цикл VBA «For»Все языки программирования используют цикл VBA For Next. После оператора FOR в этом цикле есть критерий, и код повторяется до тех пор, пока критерий не будет достигнут. читать далее для ряда столов раз, и в течение этого Цикл VBAЦикл VBAЦикл VBA в Excel — это инструкция для запуска кода или многократного повторения действия.читать далее, мы будем запускать вложенные циклы for для доступа к каждой строке и каждому столбцу в строке.
Получить объект Пример 1-17
  • Поскольку мы не хотим сохранять документ и выходить из приложения. Мы также должны освободить память системы. Чтобы сделать то же самое, мы напишем следующий код.
Получить объект Пример 1-18

Теперь всякий раз, когда мы открываем файл Excel, заливка обновляется содержимым таблицы из документа Word.

Пример VBA Get-Object 1-19

Код:

Private Sub Workbook_Open()

Rem Declaring Object variables to access object created by GETOBJECT
Dim WdApp As Object, wddoc As Object
Rem Declaring a string variable to access the Word document
Dim strDocName As String

Rem Error handling
On Error Resume NextError Resume NextVBA On Error Resume Statement is an error-handling aspect used for ignoring the code line because of which the error occurred and continuing with the next line right after the code line with the error.read more

Rem Activating MS Word if it is already opened
Set WdApp = GetObject(, "Word.Application")

If Err.Number = 429 Then
Err.Clear
Rem Creating a Word application object if MS Word is not already opened
Set WdApp = CreateObject("Word.Application")
End If

WdApp.Visible = True

strDocName = "C:UsersCBA7_01DesktopMarks Details.docx"

Rem Checking relevant directory for the relevant document
Rem If not found then informing the user and closing the program
If Dir(strDocName) = "" Then
MsgBox "The file " & strDocName & vbCrLf & "was not found in the folder path" & vbCrLf & "C:UsersCBA7_01.", _vbExclamation, "Sorry, that document name does not exist."
Exit Sub
End If

WdApp.Activate

Set wddoc = WdApp.Documents(strDocName)

If wddoc Is Nothing Then Set wddoc = WdApp.Documents.Open("C:UsersCBA7_01DesktopMarks Details.docx")
wddoc.Activate

Rem Defining variables to access the tables in the word document
Dim Tble As Integer
Dim rowWd As Long
Dim colWd As Integer
Dim x As Long, y As Long
x = 1
y = 1

With wddoc
Tble = wddoc.Tables.Count
If Tble = 0 Then
MsgBox "No Tables found in the Word document", vbExclamation, "No Tables to Import"
Exit Sub
End If

Rem Starting the looping process to access tables and their rows, columns
For i = 1 To Tble
With.Tables(i)
For rowWd = 1 To .Rows.Count
For colWd = 1 To .Columns.Count
Cells(x, y) = WorksheetFunction.Clean(.cell(rowWd, colWd).Range.Text)
Rem Accessing next column
y = y + 1
Next colWd
Rem Going to next row and start from column 1
y = 1
x = x + 1
Next rowWd
End With
Next
End With

Rem we do not need to save the word document
wddoc.Close Savechanges:=False
Rem we quit MS Word application
WdApp.Quit
Rem We finally release system memory allocated for the 2 object variables
Set wddoc = Nothing
Set WdApp = Nothing

End Sub

То, что нужно запомнить

  1. Существует некий одноэкземплярный объект, для которого генерируется только один экземпляр объекта, вне зависимости от номера, для которого запускается CreateObject. Функция GetObject всегда возвращает один и тот же экземпляр, когда она вызывается со строкой нулевой длины, и возникает ошибка, если аргумент «путь» не упоминается.
  2. Мы не можем использовать GetObject для доступа к ссылке на класс, созданный с помощью VBA.
  3. Если в этом случае нет активного экземпляра приложения MS Word или мы не хотим, чтобы объект инициировался с уже загруженным файлом, то мы сначала используем функцию CreateObject для создания объекта, а затем используем функцию GetObject для доступа к объекту. .

УЗНАТЬ БОЛЬШЕ >>

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *