Тип excel application не определен

Обновлено: 07.07.2024

Cвойства, имена которых начинаются с Active , позволяют обращаться к различным активным объектам.

ActiveCell возвращает объект типа Range , который представляет собой активную (выделенную) ячейку рабочего листа, отображаемого в данный момент на экране. Если при вызове этого свойства на экране нет открытого листа - произойдет ошибка.

Очевидно, что свойство Value объекта ActiveCell содержит данные, которые записаны в ячейку, а свойство Address - адрес ячейки.

Остальные свойства этой группы предназначены для обращения к следующим объектам:

  • ActiveChart - к активной диаграмме.
  • ActivePrinter - к активному принтеру.
  • ActiveSheet - к активному листу. Это свойство очень часто используется на практике. Например, листинг 7.7. позволяет вывести имя активного листа.

13.4.2. Cells, Columns, Rows, Sheets, Workbooks, Worksheets, Names - наборы объектов и коллекции

Эти свойства возвращают соответствующие наборы объектов и коллекции. Подробности о них мы рассмотрим ниже, здесь лишь определим их основное предназначение.

  • Cells, Columns, Rows - возвращают наборы объектов Range , содержащие, соотвественно, ячейки, столбцы, строки. При вызове этих свойств можно указывать, какие именно объекты нужно возвратить, а можно, вызвав без параметров, получить все объекты нужного вида.
  • Sheets , Worksheets - возвращают коллекции, которые содержат листы активной книги. В коллекции Sheets будут содержаться листы, которые содержат диаграммы и обычные листы, а в коллекции Worksheets - лишь обычные листы.
  • Workbooks - возвращает коллекцию открытых книг.
  • Names - возвращает коллекцию именованных диапазонов - с ними можно работать так же, как с закладками в MS Word.

13.4.3. Range - ячейка или группа ячеек

Возвращает объект Range , который ссылается на ячейку или группу ячеек. Это - один из важнейших объектов для работы с ячейками - ниже мы остановимся на нем подробнее.

13.4.4. ScreenUpdating - обновление экрана

Позволяет включать (присвоением свойству True ) и отключать (присвоением False ) обновление экрана. Имеет смысл отключить обновление экрана перед теми частями программы, которые интенсивно пользуются данными на листе. Благодаря тому, что системные ресурсы не будут тратиться на обновление экрана, программа будет работать быстрее. Этот метод весьма актуален, так как MS Excel часто используют для проведения ресурсоемких расчетов.

Практика показывает, что если программа интенсивно использует вывод на экран в процессе работы, если она изменяет данные, которые участвуют в расчете формул, расположенных на листе, то отключение вывода может ускорить работу в 3-10 раз.

Например, ниже (листинг 13.8.) приведен код, который два раза повторяет процедуру 100-кратного вывода на экран 400 целых случайных чисел и выводит время, требующееся для выполнения этих действий с обновлением экрана и без него.

Листинг 13.8. Оценка скорости работы с обновлением экрана и без него

13.4.5. Selection - ссылка на выделенный объект

Это очень важное свойство возвращает ссылку на выделенный объект. Чаще всего это - ячейка или группа ячеек. Например, это свойство удобно использовать при работе с выделенным диапазоном ячеек (или отдельной выделенной ячейкой). Ниже мы коснемся его подробнее.

13.4.6. WorksheetFunction - формулы Excel в коде VBA

Возвращает объект WorksheetFunction , методы которого представляют собой формулы Excel, которые можно использовать в коде VBA. Использование этого свойства позволяет облегчить выполнение сложных расчетов.

13.5. События Application

Объект Excel.Application поддерживает множество событий . Работа с ними аналогична работе с событиями Word.Application , которыми мы занимались в соответствующем разделе предыдущей главы.

Рассмотрим основные шаги, которые необходимо произвести, чтобы работать с событиями приложения, перечислим события и приведем пример.

Создайте новый модуль класса. Добавьте в него объявление объекта типа Excel.Application с событиями (листинг 13.9.).

Листинг 13.9. Объявляем новый объект типа Excel.Application с событиями

После этого в списке объектов редактора кода модуля появится объект obj_ExApp , а в списке событий - соответствующие ему события. Выберите нужное вам событие - автоматически будет создан обработчик для него. В частности, Excel.Application поддерживает следующие события:

  • NewWorkbook - происходит при создании новой книги
  • SheetActivate - при активации любого листа
  • SheetBeforeDoubleClick - происходит при двойном щелчке по листу, то есть позволяет перехватить щелчок и выполнить собственную процедуру до того, как будет выполнено стандартное действие.
  • SheetBeforeRightClick - позволяет перехватить нажатие правой кнопки мыши по листу.
  • SheetCalculate - после пересчета листа или после изменения данных, которые отображаются на диаграмме.
  • SheetChange - при изменении содержимого ячеек на любом листе.
  • SheetFollowHyperlink - происходит при переходе по гиперссылке, которая может быть включена в лист Microsoft Excel.
  • SheetSelectionChange - при изменении выделения на листе
  • WindowActivate - при активации окна книги.
  • WindowDeactivate - при деактивации окна книги.
  • WindowResize - при изменении размера окна книги.
  • WorkbookActivate - при активации книги.
  • WorkbookBeforeClose - перед закрытием книги.
  • WorkbookBeforePrint - перед печатью книги.
  • WorkbookBeforeSave - перед сохранением книги.
  • WorkbookDeactivate - при деактивации книги.
  • WorkbookNewSheet - при добавлении нового листа в любую из открытых книг.
  • WorkbookOpen - при открытии книги.

После того, как создан обработчик, написан его код, работа еще не окончена. Следующий шаг - это связывание объекта obj_ExApp с реально работающим приложением. Ниже приведен полный код модуля с одним обработчиком события, а также - процедура, служащая для связывания объекта obj_ExApp с работающим приложением. Эта процедура может существовать в виде отдельного макроса или в виде кода обработчика нажатия на кнопку. Ее выполнение можно назначить событию открывающейся книги, которая содержит данный модуль класса и т.д.

Итак, вот (листинг 13.10.) код процедуры, который связывает объект созданного нами класса AppEvents с приложением:

А вот (листинг 13.11.) полный код модуля класса AppEvents с объявлением объектной переменной и обработчиком события.

Листинг 13.11. Код модуля класса с обработчиком события

13.6. Выводы

В этой лекции мы обсудили методы, свойства и события объекта Application приложения Microsoft Excel . Можно заметить, что некоторые из этих методов прямо указывают на то, что Excel - это приложение , рассчитанное на проведение достаточно серьезных расчетов. В следующей лекции мы рассмотрим особенности работы с документами MS Excel .

Какие Excel библиотеки необходимы для создания CreateObject('Excel.Application') ?
проблема в том что клиент не хочет пользоваться MS Excel. существуют ли возможность работы с Open.

что нужно для создания видеоконференции?
Пожалуйста, киньте ссылочку - что нужно для создания видеоконференции - программное обеспечение.

Что нужно для создания трекера
Есть желание создать свой трекер, из чего вытекают некоторые вопросы: какой движок лучше.

Привет. Тут надо малость не так.
Для начала идешь в меню Project, References, там ставишь галочку на пункте Microsoft Excel 9.0 Object Library.
Далее: в коде (там где надо, но лучше в разделе General) пишешь:
Public MyXL As New Excel.Application
'открываем рабочую книгу
MyXL.Workbooks.Open ('File Name')
'Ссылаюсь на содержание ячейки А1
Txt.Text = MyXL.Worksheets('Лист1').Cells(1, 3).Value

Ну и так далее извращайся как можешь.
Удачи.

Alexey,
Всё правильно, только лучше не использовать
Public MyXL As New Excel.Application
особенно с офисовскими объектами - очень не эффективно. Вместо этого
Public MyXL As Excel.Application
Set MyXL = New Excel.Application

Файл excel9.olb - вроде то что надо, но почему-то не регистрируется (( срочно нужна библиотека типов EXCEL

Леон.
Что то я не улавливаю в чем тут разница,
что ты пишешь
Public MyXL As New Excel.Application
что ты пишешь
Public MyXL As Excel.Application
Set MyXL = New Excel.Application
насколько я понимаю результат один и тот же (объясни темноте).

А тебе дорогой Ant можно посоветовать поставить заново VB-6 SP-5 и снести Office2000 и проинсталить заново. Мож че и получиться.

Alexey Привет!
При использовании твоего метода объект не создаётся в момент выполнения
Public MyXL As New Excel.Application
реальное создание объекта происходит только при первом к нему обращении. Проблема в том, что компилятор не знает, какое обращение первое, поэтому перед каждым использованием объекта при компиляции добавляется код для проверки и создания объекта при необходимости. Естественно большая часть этого кода совершенно лишняя, так как ты точно знаеш, когда нужно создать объект. Особенно серьёзные потери при использовании сложной иерархии объектов, как в случае с Офисом.

Что касается переустановки Office2000 - совершенно согласен.

Что нужно для создания сервера для мобильного приложения?
Добрый день. Необходимо сделать сервер для кросплатформенного мобильного приложения. В приложении.

Что нужно знать для создания сайтов?
Добрый день! Решил занятся сайтостроительством. Незнаю с чего начать, сейчас учу HTML, PHP. Что.

Что нужно для создания такого сайта
Всем привет, помогите создать сайт на главной странице которого будет список анкет.


Тем не менее, я не мог избавиться от этой ошибки - я считаю, что у нее есть собственное быстрое решение.

Я немного покопался на этом сайте и наткнулся на это решение: тип взаимодействия не может быть встроен

Однако я не мог понять, поэтому не мог реализовать то, что было предложено в качестве решения.

Любая помощь очень ценится.

Если это не ошибка кода, удалите указанный ниже ключ из реестра.

Пуск -> Выполнить -> regedit -> HKEY_CLASSES_ROOT -> TypeLib -> -> 1.8 / 1.7 (Удалить это)

Решение. Эту проблему можно решить, удалив недопустимый раздел реестра, оставшийся от более поздней версии Office. Следуйте вышеуказанным шагам.

Причина: эта проблема вызвана оставшимся разделом реестра, если вы понизили версию Microsoft Office с Office 2010 до Office 2007 или с Office 2013 до Office 2010 или 2007.

Сообщите мне, если вам не помогло это решение

Microsoft Office 365

Я запускал Microsoft Office 365 с Windows 10 и безуспешно пробовал упомянутые решения для удаления раздела реестра.

Я пошел к панели управления, пытаясь восстановить пакет Office 365.


Выбрал быстрый ремонт


Еще раз попробовал мою программу, и все заработало!

Я уверен, что ответы на этот вопрос (и аналогичные вопросы), предлагающие редактировать реестр и удалять старые ссылки на версии Office, которых больше нет на компьютере верны.

Я добавляю этот ответ только потому, что сейчас пинаю себя. Два часа потратил на поиски ключей в реестре и ни к чему не привело. Последний бросок кости заключался в том, чтобы попробовать простое ремонт в Microsoft Office и вдруг моя ошибка исчезла.

  • Благословения вам, я застрял с последних 45 минут

Windows 7 x64 / Office 365 (16.0.x) 32-разрядная / VS 2019

P.S> Была произведена проверка "после обработки" Process Monitor - теперь файл берется из первым зондом.

Компьютер был обновлен до 64-разрядной версии Office 2016, и интерфейс COM генерировал исключения при вызове из 32-разрядного приложения. У него не было старых записей TypeLib, подобных тем, что были в ответе Джайеша.

Сравнение трассировки ProcessMonitor с работающей машиной с Office 2016 привело к тому, что в

HKEY_CLASSES_ROOT \ Wow6432Node \ TypeLib \

Рабочая машина проверит несуществующий ключ реестра и вернет

На отказавшей машине был ключ реестра, но вскоре после этого возникло исключение.

После многократного удаления раздела реестра, повторного запуска трассировки и удаления следующего отказавшего ключа функциональность COM-интерфейса была восстановлена.

  • Попробовав все, что я мог придумать, я прочитал это и понял, что мой компилятор настроен на 32-битный. Снятие отметки с этого поля было последней частью головоломки.

В моем случае я удаляю regedit в:


и проблема решена.

В реестре были 1.7 и 1.8. Решено удалением:

Что такое DCOM

Настройка DCOM для Excel.Application

И так у меня есть виртуальная машина под управлением Windows Server 2012 R2, на ней установлены серверные компоненты 1С, есть задача для Excel.Application модуля, настроить DCOM компоненты.

Для выполнения нижеописанных действий, вам будут необходимы права локального администратора, на том сервере, где все будет выполняться

Нам необходимо открыть в панели управления Windows, компонент "Службы компонентов".

Открываем службы компонентов

Полный путь "Панель управления\Все элементы панели управления\Администрирование\Службы компонентов"

Либо можете, через окно выполнить ввести DCOMCNFG, откроется, тоже самое.

Запуск DCOMCNFG

В службах компонентов (Component Services) откройте ветку:

Компоненты - Мой компьютер - Настройка DCOM - Microsoft Excel Application (Component Services - Computers - My computer - DCOM Config)

Настройка Microsoft Excel Application

Если по каким-то причинам у вас нет пункта Microsoft Excel Application, откройте реестр Windows, найдите ветку: HKEY_CLASSES_ROOT\AppID\EXCEL.EXE, если ее нет, то создаем ее. В ней должен быть ключ REG_SZ со значением .

НАстройка DCOM для Excel.Application

КОМУ ЛЕНЬ самому создавать, то можете скачать данный ключ реестра у меня. Просто запустите потом и подтвердите, что согласны добавить. Затем откройте командную строку от имени администратора и выполните команду:

У вас откроется mmc оснастка "Службы компонентов", которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты. В результате этих манипуляций компонент Microsoft Excel Application у вас должен появиться. Открываем свойства Microsoft Excel Application.

Настройка DCOM для Excel.Application-02

Переходим на вкладку "Безопасность (Secutity)". В пункте "Разрешения на запуск и активацию (Launch and Activation Permissions)", выберите "Настроить (Customize )" и изменить. Вам нужно добавить сюда учетную запись, от имени которой запускается служба 1С и предоставить ей права:

  • Локальный запуск - Local Launch
  • Локальная активация - Local Activation

Настройка DCOM для Excel.Application-03

Далее переходим к пункту "Разрешения на доступ (Access Permissions)" и так же меняем их. Добавьте там ту же учетную запись, от имени которой запускается сервис 1С, и дайте ей права "Локальный доступ (Local Access)". Сохраните настройки.

Настройка DCOM для Excel.Application-04

Закрываем окно служб компонентов, теперь для того, чтобы закончит ьнастройку DCOM для 1С и Microsoft Excel Application, вам необходимо дать права на две папки.

Microsoft Office Excel - это популярные электронные таблицы. Обычно, программируя для этой программы, преследуют такие цели:

  • Автоматизация вычислений.
  • Автоматизация ввода и обработки информации.
  • Работа с базами данных - вывод, ввод, анализ, визуализация информации.
  • Анализ финансовой и другой информации.
  • Создание систем для организации автоматизированного ввода данных
  • Математическое моделирование .

В общем виде программирование в Excel похоже на работу с Microsoft Word . Однако одно из главных отличий заключается в том, что в Excel рабочая область листа разбита на ячейки, каждая из которых имеет собственное имя. Имена ячеек могут быть двух видов.

  • Первый вид (стиль A1) - это имя, состоящее из буквенного имени столбца и номера строки. Например, A1 - ячейка, находящаяся на пересечении столбца А (первого) и первой строки.
  • Другой вид - это индексы ячеек (стиль именования R1C1 ). Для адресации ячейки в таком стиле указывают номер строки (R - Row - строка) и номер столбца (C - Column - столбец), на пересечении которых расположена ячейка. Строки изначально пронумерованы, а номера столбцов начинаются с 1 - первому столбцу соответствует столбец A , второму - В и т.д. Например, (2, 3) - это адрес ячейки, находящийся на пересечении второй строки и третьего столбца, то есть, если переложить это на стиль A1 - получим ячейку С2 (рис. 13.1.)

Для выполнения большинства операций в MS Excel применяются следующие объекты.

  • Excel.Application (Приложение) - объект, представляющий приложение Microsoft Excel, аналогичен Word.Application .
  • Workbook ( Рабочая книга ) - представляет рабочую книгу - аналог документа Microsoft Word. Однако, в Word мы работаем с данными, расположенными в документе, а в Excel на пути к данным есть еще один объект - рабочий лист.
  • Worksheet (Рабочий лист) - книга в MS Excel разбита на рабочие листы. Именно на листе расположены ячейки, которые могут хранить информацию и формулы.
  • Range (Диапазон) - может быть представлен в виде одной ячейки или группы ячеек. Этот объект заменяет множество объектов для работы с элементами документов ( character , word и т.д.), которые применяются в Microsoft Word. В результате работа с листом становится очень четкой и удобной - чтобы работать с какой-либо ячейкой, надо знать лишь ее имя (в формате A1) или адрес ( R1C1 ).
  • QueryTable (Таблица запросов) - этот объект используют для импорта в Microsoft Excel информации из баз данных. Подключение к базе данных , запрос информации и т.д. производятся средствами объекта, а итоги запроса выгружаются на лист MS Excel в виде обычной таблицы.
  • PivotTable (Сводная таблица) - это особый вид электронной таблицы Excel - она позволяет в интерактивном режиме обобщать и анализировать большие объемы информации, в частности, взятой из базы данных.
  • Chart (Диаграмма) - представляет собой диаграмму. Обычно их используют для визуализации данных.

Давайте начнем рассмотрение объектной модели MS Excel с объекта Application .

13.2. Объект Application

Принципы работы с объектом Application в MS Excel очень похожи на таковые в MS Word .

Рассмотрим пример. Откроем MS Excel , добавим на рабочий лист кнопку, добавим в обработчик щелчка по кнопке такой код (листинг 13.1.).

Теперь рассмотрим наиболее важные методы и свойства Application . Некоторые из них похожи на таковые в MS Word . Например, метод Quit точно так же, как в Word , закрывает приложение , свойство Visible отвечает за видимость окна программы и т.д.

13.3. Методы Application

13.3.1. Calculate - принудительный пересчет

Этот метод, вызываемый для объекта Application , позволяет пересчитать все открытия книги. Его же можно вызывать для отдельных книг (объект Workbook ) листов ( Worksheet ), ячеек и их диапазонов ( Range ). Например, код из листинга 13.2. позволяет пересчитать все открытые книги.

13.3.2. GoTo - переход в ячейку

Позволяет выделить любой диапазон ячеек в любой книге, причем, если книга не активна - она будет активирована. Так же метод может запускать макросы Microsoft Excel.

Полный вызов метода выглядит так:

В качестве параметра Reference используется ссылка на ячейку или диапазон ячеек , которые должны быть выделены после вызова метода. Так же здесь может быть использовано имя макроса - тогда он будет запущен.

Параметр Scroll отвечает за "перемотку" листа Excel к выделенным ячейкам - так, чтобы левый верхний угол выделения совпадал бы с левым верхним углом отображаемой области листа. Если Scroll установлен в True - лист перематывается, если в False - нет.

Например, такой вызов (листинг 13.3.) позволяет выделить ячейку H500 на активном листе.

Как видите, обращение к активному листу очень напоминает обращение к активному документу в MS Word. Обратите внимание на то, что мы используем полное обращение к методу - Application.GoTo - как вы знаете, обычно свойства и методы объекта Application можно использовать в коде, не указывая этого объекта. Однако, если в этом случае не указать Application , то вместо метода GoTo программа попытается выполнить оператор безусловного перехода GoTo .

13.3.3. SendKeys - имитация нажатий на клавиши клавиатуры

Очень интересный метод - позволяет передавать в активное окно приложения нажатия клавиш. Полный вызов метода выглядит так:

Параметр Keys позволяет задавать клавиши, нажатия которых будут переданы приложению. Метод поддерживает эмуляцию как алфавитно-цифровых, так и управляющих клавиш , для которых применяется специальная кодировка. Алфавитно-цифровые клавиши указываются при вызове в своем обычном виде Например, для передачи символа "Ф" нужно указать его при вызове метода и т.д.

Чтобы передать приложению нажатия клавиши Backspace - используйте код . Для передачи нажатия кнопки Enter используйте значок

( тильда ), для клавиши Del - код .

Для передачи приложению нажатий клавиш Shift , Ctrl или Alt , можно воспользоваться следующими кодами этих клавиш:

  • SHIFT - + (знак плюс)
  • CTRL - ^ (крышка)
  • ALT - % (знак процента)

Параметр Wait может принимать значения True или False . Если он будет установлен в True - макрос подождет, пока приложение обработает введенные с "клавитуры" данные, после чего продолжит выполнение. Если в False - макрос ждать не будет.

Рассмотрим пример. С помощью метода SendKeys введем в ячейку A1 текст "Сейчас закрою программу!", после чего попытаемся закрыть программу, "нажав" сначала Alt , потом Ф (для открытия главного меню Office), и потом - Ы - для выхода из программы. Подразумевается, что при запуске макроса (листинг 13.4.) указанная ячейка активна - в ней находится рамка выделения.

После выполнения этого кода вы увидите окно со стандартным вопросом о сохранении документа.

13.3.4. Wait - пауза при выполнении макроса

Позволяет сделать паузу в выполнении макроса. Пауза может быть нужна для того, чтобы пользователь успел что-то рассмотреть или для того, чтобы на время освободить вычислительные ресурсы системы.

Читайте также: