Как в ole открыть excel

Содержание

  1. Часть 1. Работа с OLE-сервером Excel.
  2. 1.1 Получение доступа к интерфейсу Application для Excel.
  3. 1.2 Интерфейсы и константы
  4. 1.3 Создание рабочих книг
  5. 1.4 Вывод информации в ячейки
  6. Microsoft Excel ожидает, пока другое приложение завершит действие OLE
  7. Что такое действие OLE?
  8. Что вызывает ошибку «Microsoft Excel ожидает, пока другое приложение завершит действие OLE»?
  9. Способ 1. Удаление Adobe Acrobat PDFMaker (если применимо)
  10. Способ 2: разрешение приложений, которые используют DDE в настройках Excel
  11. Способ 3: уничтожение процесса Internet Explorer (IE)
  12. Метод 4: Подавление обмена сообщениями Excel
  13. Способ 5: отключить режим совместимости (если применимо)

Часть 1. Работа с OLE-сервером Excel.

Поставим целью из приложения (контроллера автоматизации) создать документ, изображенный на Рис 1.1. Он типичен с точки зрения созданя прикладных программ, использующих для вывода информации Excel и содержит три наиболее часто используемых составных элемента: текстовое поле, электронную таблицу и диаграмму. Путь создания данного документа — это шаги, которые позволят освоить работу с OLE сервером Excel.

Рис 1.1 Итоговый документ, сформированный контроллером.

Для того, чтобы запустить приложение Word или Excel из программы на «Borland C++ Builder» достаточно выполнить, например, следующий код:

В директории, откуда запущена программы или по указанному пути (например, вместо *.xls указан файл, а вместо параметра NULL путь C:AB) должен находиться файл с расширением соответственно .doc или .xls, пусть даже пустой.

Приложения будут запущены (есть и другие способы запуска), но управлять ими нельзя — с момента запуска они автономны от запустивших их приложений.

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

1.1 Получение доступа к интерфейсу Application для Excel.

1. Включить в проект модули:

2. Определить — лучше глобально (для наглядности и удобства) — переменные, отражающие иерархию объектов Excel
Приложение->Набор книг->Книга->Набор страниц->Страница->ячейки(ячейка):

3. создать объект автоматизации:

Можно видеть у отдельных авторов в некоторых примерах конструкцию вида Excel.Application.9 и т.п. , что не является обязательным, а скорее всего и вредным — ориентация будет на конкретную библиотеку *.olb. Без указания версии Offise приложение берет ее из реестра (HREY_CLASSES_ROOT раздел Word.Application ключ CurVer, там можно прочитать Excel.Application.8 или Excel.Application.9 или . ).

С этого момента можно пользоваться свойствами и методами созданного ole сервера, а именно:

Чтение значения свойства.

1.2 Интерфейсы и константы

Список интерфейсов и констант в Builder можно получить при просмотре библиотеки типов Microsoft Word/Exvel Object Library.

Создав пустое приложение (File/New/Application) и выбрав пункт меню в Buildere File/Open, указав в списке возможных файлов Type Library и выбрав соответствующую библиотеку типов и загрузить ее (для Excel в зависимости от версии это, например, Excel9.olb, для Word — MSWord9.olb). Библиотеки, как правило находится в директории

Загрузка идет несколько минут (библиотеки велики) и по окончании будет создана панель навигатор (Рис 1.2). с описанием всех использованных констант, а также свойств и методов содержащихся в сервере объектов.

Рис 1.2 Библиотека Excel9.olb.

При создании этих файлов появятся сообщения об ошибках, связанные с тем, что в коде Excel и Word могут использоваться зарезервированные слова С++.

После этого возможен просмотр методов и доступ к свойствам и константам указанного интерфейса. Например, для свойства WorkBooks — Application, Creator, Parrent, Add, Close, Count, Item. Open . — это методы, которые в свою очередь имеют свои свойства, которые можно посмотреть на закладке Parametrs.

При использовании констант будем использовать их числовые значения!! — иначе в файл .cpp придется включать модуль с указанием конкретной версии Offise — например:
#include

Как показано на рисунке, например константа xlBuiltIn имеет значение 21.

Поиск и просмотр возможных констант — наиболее частая потребность при написании программы, здесь довольно затруднителен — нет даже меню поиск, поэтому лучше преобразовать информацию из библиотеки в текстовый файл, нажав крайнюю правую кнопочку навигатора (Export to idl), и преобразованный файл появится как файл с расширением .idl в проекте рядом с файлом Unit1.cpp — теперь достаточно сохранить его в удобном месте и для поиска использовать любой текстовый редактор, к примеру встроенный в FAR.

Для продолжения работы после сохранения файла *.idl и закрытия *.olb необходимо вернуться в рабочую директорию проекта.

Свойств и методов для серверов Word и Excel в указанных библиотеках пожалуй не менее чем в компонентах Builder, поэтому для ориентации при написании программ в среде Borland C++ Builder лучше использовать так называемый » хитрый метод «.

Суть его в переводе макроса из кода Visual Basic в С++ код. Этот способ также позволяет просмотреть имена констант линий, стилей, цветов . Уже по именам легко найти их значения в библиотеках и в сохраненном файле .idl.

1. Запустить Ехель.

2. Сервис/Maкрос/Начать запись

3. Выполннить последовательность нужных действий.

4. Остановить запись

5. Вызвать Visual Basic (Alt+F11)

7. Перевести код из кода Visual Basic в С++.

1.3 Создание рабочих книг

Рассмотрим создание двух рабочих книг из 3х и 5ти листов.

Создаем новое приложение (File/New/Application) и сохраним его файлы в директории по умолчанию (Projects) c именами по умолчанию Unit1.cpp, Unit1.h, Unit1.dfm, Project1.cpp, Project1.bpr. Имена на данном этапе не цель, хотя не возбраняется создать новую директорию и дать приложению и файлам подходящие имена.

Переменные соответствующие используемым в программе объектам, а именно:

определим сразу все и глобально — или в файле Unit1.h (в разделе private:), или перед функциями в Unit1.cpp, хотя для данного этапа требуются пока не все переменные и можно определить нужные и локально.

Переменная fStart служит индикатором того, что сервер запущен.

Разместим на форме три кнопки (из вкладки Standart компонент TButton). Подписывать кнопки также не будем (сейчас это тоже не цель), но запомним, что по первой кнопке будем работать с таблицей, по второй с диаграммой, а по третьей закрывать сервер и приложение. Выполним два левых клика по Button1 и Button3, создаем таким образом обработчики события нажатия кнопки.

Третья кнопка таким образом служит для выхода из программы и закрытия сервера.

В обработчике нажатия первой кнопки начнем формировать код программы.

Создаем Объект Excel.Application.

В принципе конструкцию try catch желательно использовать со всеми Ole вызовами, но громоздкость программы сделает ее ненаглядной. В дальнейшем можно оформить все используемые вызовы в виде класса, но на данном этапе задача стоит в освоении богатства возможностей вызовов, а не ловля возможных букашек. Да и все, приведенные сдесь вызовы 100% работоспособны.

Сделаем приложение видимым (лучше наверное всетаки в конце, но так нагляднее — будет видно как идет заполнение таблиц и т.п.).

Переменной vVarBooks присваивается значение Workbooks — свойство объекта Excel.Application, содержащее набор рабочих книг Excel.

SheetsInNewWorkbook задает количество листов в создаваемой книге, пусть в первой книге их будет 3(Кстати по умолчани тоже создается книга, содержащая три листа).

Добавляем книгу из 3 листов в объект vVarBooks.

Количество листов во второй создаваемой книге, пусть будет 5.

Добавляем книгу из 5 листов в объект

Переменная vVarBook содержит ссылку на текущую книгу. (Пусть текущая книга 1).

Переменной vVarSheets присваиваем значение Worksheets — свойство объекта Excel.Application, содержащее набор страниц книги Excel.

Присвоение имен листам книги. Т.е, необходимо взять лист выбранной книги и дать ему имя. Заодно и покрасим листы, для чего в любом графическом редакторе создадим два файла с именами a.gif и b.gif размером в несколько пиаселей и соответственно с желтой и красной заливкой. Размер сумарный файлов менее 1к, но приятнее работать не с белым листом. Файлы должны быть помещены в текущую директорию.

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

1.4 Вывод информации в ячейки

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

Основные шаги при заполнении таблицы повторяются:

2. Выбрать ячейку или группу ячеек на выбранном листе. Для отдельной ячейки (x и y координаты ячейки):

Для группы ячеек:

3. Установить режим выравнивания текста в ячейке (ячейках).

Выравнивание текста — вертикальное — Константы

Источник

Microsoft Excel ожидает, пока другое приложение завершит действие OLE

Некоторые пользователи Office сообщают об ошибке «Microsoft ожидает, пока другое приложение завершит действие OLE» при попытке запустить сценарий VBA или при запуске Excel из стартовой панели. Сообщается, что эта проблема возникает во всех последних версиях Windows, включая Windows 7, Windows 8.1 и Windows 10.

Что такое действие OLE?

Действие «Связывание и внедрение объектов» (OLE) – это, по сути, механизм, разработанный для того, чтобы помочь различным приложениям Office (Word, Excel, Powerpoint, Sharepoint) взаимодействовать с другими приложениями.

Что вызывает ошибку «Microsoft Excel ожидает, пока другое приложение завершит действие OLE»?

Мы исследовали эту конкретную проблему, просматривая различные пользовательские отчеты и просматривая официальную документацию Microsoft. Нам даже удалось воспроизвести проблему на одной из наших машин для тестирования.

Если Excel отправляет запрос связи другому приложению (скажем, Word), он делает это с помощью объекта OLE, а затем ожидает ответа от приложения. Если ответ не приходит в установленный по умолчанию временной интервал, Excel выдаст конечному пользователю следующее предупреждение: «Microsoft Excel ожидает, пока другое приложение выполнит действие OLE».

Хотя сообщение об ошибке всегда одно и то же, на самом деле есть несколько довольно распространенных сценариев, которые вызывают эту конкретную ошибку в Microsoft Excel:

  • Протокол DDE отключен в Excel. Эта проблема может возникать из-за того, что протокол динамического обмена данными (DDE) отключен в настройках Excel.
  • Поврежденная установка Office. Некоторые затронутые пользователи сообщают, что проблема была решена после переустановки или восстановления пакета Office.
  • Надстройка Adobe Acrobat PDFMaker конфликтует с Excel. Было несколько отчетов пользователей, которые смогли решить проблему, отключив или удалив плагин PDFMaker.
  • Процесс IE (Internet Explorer) мешает работе DDE. Обычно это происходит, когда пользователь пытается сохранить файл в Microsoft Excel. В этом случае решение состоит в том, чтобы закрыть процесс вручную.

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

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

Способ 1. Удаление Adobe Acrobat PDFMaker (если применимо)

Некоторым пользователям удалось устранить сообщение об ошибке, удалив надстройку Adobe Acrobat PDF Maker. Как оказалось, этот плагин может конфликтовать с определенными версиями Microsoft Excel.

Вот список версий Office, совместимых с PDF Maker:

  • Office 2010 (Office 14) 32-разрядный и 64-разрядный
  • Office 2013 (Office 15) 32-разрядная и 64-разрядная версии
  • Office 2016 (Office 16) 32-разрядная и 64-разрядная версии

Если этот сценарий применим, и вы не сильно полагаетесь на PDF Maker, вы, скорее всего, сможете решить эту проблему, отключив или удалив надстройку Adobe Acrobat PDFMaker.

Вот краткое руководство о том, как это сделать:

  1. Откройте Microsoft Excel и нажмите « Файл» на ленточной панели.
  2. В меню «Файл» выберите « Параметры» (внизу списка меню).
  3. В меню параметров Excel выберите « Надстройки» в левом меню. Затем перейдите к правой панели, разверните раскрывающееся меню, связанное с управлением, и выберите Надстройки COM . Затем нажмите кнопку « Перейти…» , чтобы открыть меню надстроек Com .
  4. В поле Надстройки COM снимите флажок, связанный с надстройкой Acrobat PDFMaker Office COM, или выберите его и нажмите «Удалить», чтобы полностью удалить его.
  5. Перезагрузите компьютер и заново выполните шаги, которые ранее вызывали ошибку, после завершения следующего запуска.

Если вы по-прежнему сталкиваетесь с ошибкой «Microsoft Excel ожидает, пока другое приложение завершит действие OLE» , перейдите к следующему способу ниже.

Способ 2: разрешение приложений, которые используют DDE в настройках Excel

Как сообщают многие пользователи, проблема может возникнуть, если Microsoft Excel настроен на игнорирование любых приложений, которые пытаются обмениваться данными с Excel, используя протокол динамического обмена данными (DDE) .

Например, допустим, вы дважды щелкнули книгу Excel в проводнике Windows – как только команда зарегистрируется, динамический обмен данными (DDE) будет отправлен в Excel. Этот обмен инструктирует Excel открыть книгу, которую вы только что дважды щелкнули.

Если Excel настроен на игнорирование приложений, использующих протокол динамического обмена данными , обмен не произойдет, и вы увидите сообщение об ошибке «Microsoft Excel ожидает, пока другое приложение завершит действие OLE» .

К счастью, вы можете легко устранить эту проблему, открыв меню параметров Excel и включив протокол DDE. Вот краткое руководство о том, как это сделать:

  1. Откройте Microsoft Excel и нажмите « Файл» . Не имеет значения, открываете ли вы новую рабочую книгу или новый документ.
  2. В меню « Файл» выберите « Параметры» на левой панели.
    1. В меню параметров Excel выберите вкладку « Дополнительно » в левом меню. Затем перейдите на правую панель и прокрутите вниз, пока не дойдете до общего раздела. После этого убедитесь, что флажок, связанный с Игнорировать DDE запросы от других приложений, не отмечен.
  3. Нажмите ОК, чтобы сохранить изменения, затем перезапустите Microsoft Excel. Затем повторите операцию, которая ранее вызывала ошибку «Microsoft ожидает, пока другое приложение завершит действие OLE», и посмотрите, сохраняется ли проблема.

Если вы все еще сталкиваетесь с тем же сообщением об ошибке, перейдите к следующему способу ниже.

Способ 3: уничтожение процесса Internet Explorer (IE)

Ошибка «Microsoft ожидает, пока другое приложение завершит действие OLE» может возникнуть при попытке сохранить файл, поскольку процесс IE может мешать динамическому обмену данными (DDE).

Пользователи в аналогичной ситуации сообщали, что проблема была решена после того, как они вручную завершили процесс IE. Вот краткое руководство о том, как это сделать:

  1. Нажмите Ctrl + Shift + Esc, чтобы открыть диспетчер задач .
  2. В диспетчере задач перейдите на вкладку Процессы и посмотрите, есть ли у вас какой-либо процесс, принадлежащий Internet Explorer, который в данный момент активен.
  3. Если вы видите такой процесс, просто щелкните по нему правой кнопкой мыши и выберите Завершить задачу, чтобы закрыть его
  4. Вернитесь в Excel и посмотрите, возникает ли еще ошибка «Microsoft ожидает, пока другое приложение завершит действие OLE» , когда вы пытаетесь сохранить файл.

Если вы все еще сталкиваетесь с той же ошибкой, перейдите к следующему способу ниже.

Метод 4: Подавление обмена сообщениями Excel

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

Но имейте в виду, что это не решит саму проблему – это всего лишь обходной путь, который предотвращает появление сообщения об ошибке. Вот краткое руководство по вставке кода VBA в Excel Workbook, которое подавит обмен сообщениями приложений с Excel:

  1. Откройте Excel и нажмите Alt + F11, чтобы открыть редактор Visual Basic (VBE) .
  2. На панели «Project» (слева) щелкните правой кнопкой мыши ЭтаКнига и выберите « Insert»> «Module» .
  3. Во вновь созданном модуле вставьте следующий код:
  1. Нажмите Ctrl + S и нажмите Нет, когда увидите предупреждение «Следующие функции не могут быть сохранены в книге без макросов» .
  2. Затем выберите подходящее место для измененной рабочей книги, задайте правильное имя и убедитесь, что в качестве типа « Сохранить как» выбран Excel Macro-Enabled Workbook. Когда все будет в порядке, нажмите « Сохранить», чтобы создать книгу Excel с поддержкой макросов .
  3. Нажмите Alt + Q, чтобы закрыть редактор и вернуться к своей книге. Вернувшись в редактор, нажмите Alt + F8 , выберите только что созданный макрос и нажмите «Выполнить».

После завершения этой процедуры вы больше не должны видеть ошибку «Microsoft Excel ждет другого приложения для завершения действия OLE» с этой рабочей книгой (даже если она все еще может возникать в фоновом режиме).

Способ 5: отключить режим совместимости (если применимо)

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

Если вы подозреваете, что Excel работает в режиме совместимости, отключите его и посмотрите, перестает ли появляться сообщение «Microsoft Excel ожидает, пока другое приложение завершит действие OLE». Как правило, сообщение об ошибке возникает, если исполняемый файл Excel настроен для работы в режиме совместимости с Windows Vista и более ранними версиями.

Вот краткое руководство по отключению режима совместимости:

  1. Щелкните правой кнопкой мыши исполняемый файл Excel (или ярлык) и выберите « Свойства» .
  2. В окне « Свойства» перейдите на вкладку « Совместимость » и снимите флажок, связанный с «Запустить эту программу в режиме совместимости» .

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 3.3 / 5. Количество оценок: 22

Источник

На чтение 3 мин. Просмотров 8.4k. Опубликовано 03.09.2019

Существует множество ошибок, возникающих во всех приложениях, даже в таких приложениях, как Microsoft Excel, которые входят в состав пакета Office.

Об ошибке, о которой мы говорим, является печально известная ошибка « Microsoft Excel ожидает другого приложения для выполнения действия OLE ».

Когда эта конкретная ошибка появляется на вашем дисплее, у вас есть несколько вариантов для ее устранения.

Содержание

  1. Как устранить ошибку «Microsoft Excel ожидает другого приложения…»?
  2. 1. Что такое OLE a?
  3. 2: Почему появляется ошибка OLE?
  4. 3: Как исправить проблему «Excel ждет OLE»

Как устранить ошибку «Microsoft Excel ожидает другого приложения…»?

  1. Что такое действие OLE?
  2. Почему появляется ошибка OLE?
  3. Как исправить проблему «Excel ждет OLE»

1. Что такое OLE a ?

Действие «Связывание и внедрение объектов» (OLE) – это технология, позволяющая приложениям Office взаимодействовать с другими приложениями.

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

2: Почему появляется ошибка OLE?

Иногда следующая ошибка может отображаться на вашем экране, если требуемый ответ не приходит достаточно быстро: Microsoft Excel ожидает, пока другое приложение выполнит действие OLE .

3: Как исправить проблему «Excel ждет OLE»

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

1. Включить функцию «Игнорировать другое приложение, использующее DDE»

  1. Откройте лист Excel
  2. Перейти в меню «Файл»
  3. Нажмите на Опции
  4. Перейти на вкладку «Дополнительно»
  5. Прокрутите вниз до области «Общие» и установите флажок «Игнорировать другие приложения, использующие динамический обмен данными (DDE)».
  6. Перезапустите Excel

2. Отключить надстройки

  1. Откройте лист Excel
  2. Перейти в меню «Файл»
  3. Нажмите на Опции
  4. Нажмите на надстройки
  5. Выберите надстройки Excel и нажмите кнопку «Перейти».
  6. Снимите все флажки и нажмите ОК

3. Другие способы прикрепления книги Excel

Использование в Excel опции «Отправить с помощью электронной почты» может привести к указанной выше ошибке.

Вы можете отправить свою книгу, прикрепив ее в виде файла к электронному письму, например, в Outlook или Hotmail. Вы можете использовать любое приложение электронной почты, чтобы решить эту проблему.

Выберите свое почтовое приложение с умом! Мы пришли к нам на помощь с этим свежим списком!

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

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

Вставка таблицы из Excel в AutoCAD – довольно актуальная задача, если принять во внимание, что часто на листе с разработанным чертежом приходится размещать и сопроводительную спецификацию.
Как вставить таблицу из Excel в AutoCAD

Собственно, AutoCAD имеет и свои инструменты создания таблиц: как черчения – для линий, так и текстовые для наполнения.

Но если:

  • необходимо обеспечить в будущем оперативное изменение таблиц более специализированными инструментами, которые в самой популярной программе инженерного проектирования просто отсутствуют;
  • таблицы содержат расчёты, которые в будущем могут корректироваться;
  • хочется предоставить возможность влиять на процесс сопровождения разработки лицам, не владеющим или не имеющим на компьютере AutoCAD –

тогда решение задачи, как вставить таблицу из Excel в AutoCAD, может очень помочь в работе.

Разработчику необходимо только себе чётко представлять назначение двух режимов работы Автокада – «Модели» и «Листа». Первый, по замыслу разработчиков системы, служит именно для проектирования – черчения. Второй – для подготовки чертежа к печати. Очевидно, что сопроводительные таблицы относятся к справочной информации, которая нужна только при печати, поэтому и место таким объектам только в режиме «Листа». Не стоит вставлять таблицы в Автокад в «Модели» – это искажает всю идею работы приложения (некоторые даже умудряются в «Модели» и рамки делать, и писать комментарий).

Операция вставки – алгоритм по шагам

Обращаем внимание, что рассматриваемое взаимодействие обеспечивает технология объектного связывания – OLE (некоторые приложения называют её ActiveX – активного взаимодействия). Данная технология давно применяется при связи результатов работы всех приложений, входящих в пакет Microsoft Office. Но дело в том, что не все приложения вне «Офиса» поддерживают эту технологию. Возможно, в вашем распоряжении такая версия Автокада, что она эту технологию и не поддерживает. Тогда вывод может быть только один – ставить другую, более новую версию (ну, или пользоваться тем, что предоставляет ваша версия, для черчения вполне подходящая).

Кроме того, работа по OLE-технологии при решении вопроса, как вставить таблицу Эксель в AutoCAD, немного отличается от выполнения той же задачи, например, в связке Excel – Word (или, например, PowerPoint).

Там, мы сначала создаём таблицу в Excel, а затем уже проводим её «специальную» вставку в Word. Работа в связке Autocad-Excel немного другая.

Здесь:

  1. Находясь в режиме «Листа» Автокада, идём в меню Insert/OLE Object («Вставка»/«OLE-объект»).

    Вставка OLE-объекта в Автокаде

    Вставка OLE-объекта в Автокаде

  2. В открывшемся окне выбираем переключатель «Создать новый» и в соседнем списке справа – «Лист Microsoft Office Excel» (возможно, в этом списке будет ещё вариант – «Лист Microsoft Office Excel 97-2003», это если вы умудрились поставить на свой комп несколько версий «Офисов»).

    Вставка объекта в Автокаде

    Вставка объекта в Автокаде

  3. Если этот табличный процессор есть на ПК, система его запускает и перебрасывает нас в работу с листом таблицы – заметьте, макет таблицы уже появился в Автокаде.
  4. Теперь можно создать необходимое в Экселе.
  5. При закрытии листа – выходе из программы, результат работы будет вставлен в Автокад. Собственно, вставка производится уже при входе в Excel, но таблица, само собой, пока пустая. При переносе таблицы сохраняется всё назначенное форматирование.

Замечаем некоторые нюансы.

Во-первых, сразу после выхода из таблицы на экране появляется окно настройки созданного объекта – его размер, масштаб, качество при печати (это снова к разговору о назначении режимов Автокада). Обычно данные настройки оставляют такими, какие они предлагаются по умолчанию, тем более что в будущем их можно оперативно изменить. Если нет необходимости, чтобы данное окно свойств появлялось постоянно, то можно сбросить переключатель вывода данного окна (он в его нижней части).

Во-вторых, если перед вставкой не был определён видовой экран, который должен содержать таблицу, то вставка произойдёт в верхний левый угол окна режима, в противном случае – в верхний левый угол видового экрана. Но в любом случае таблицу в будущем можно переместить в нужное место листа.

В-третьих. Не забудем, что это разные вещи – белый цвет заливки и цвет заливки по умолчанию. Изначально в Excel таблицы не имеют заливки своих ячеек – просто отсутствие заливки здесь визуально совпадает с белым цветом. Такое отсутствие заливки в Автокаде превращается в заливку по умолчанию, которая имеет чёрный цвет. Поэтому, если не предпринять никаких действий в табличном процессоре, вставленная таблица будет чёрной, что, вероятно, очень далеко от необходимости. Отсюда вывод – ещё в Excel таблицу нужно будет «залить» цветом, близким к белому (заливка белым ни к чему не приводит) и обеспечить, само собой, вывод линий ячеек.

Но мало того, что таблица будет «чёрной», вы не увидите в ней и никакой информации, так как чёрный цвет содержимого в Экселе помещается на чёрный фон ячеек в Автокаде: чёрный по чёрному, вот и получается «пустота» – давний приём компьютерных дизайнеров. То, что во вставленной таблице что-то есть, вы почувствуете, перейдя в Excel – там таблица отразится так, как надо.

В будущем при двойном щелчке мышкой на такой таблице в Автокаде произойдёт вызов Экселя и переброс в него для редактирования самой таблицы – производимые изменения при выходе отразятся на листе чертежа.

Советуем быть очень аккуратными при изменении размеров таблицы. Не забудем, что её визуальное представление даже в процессоре – это совсем не то, что мы получим при печати. Даже в Excel печать необходимо настраивать, что уж говорить об Автокаде – есть большая вероятность, что ваша таблица просто не поместится не только в выбранный для неё видовой экран, но и на лист в целом, придётся заняться масштабированием.

Замечаем ещё один нюанс – хоть вставка и производится в режиме «Листа», она отражается и в «Модели», что совершенно неприемлемо с точки зрения разработчика – таблица перекрывает сам чертёж. Поэтому вывод один – сначала в «Модели» организуйте специальный слой для размещения таблицы. Этот слой можно будет визуально отключать, чтобы он не загораживал сам чертёж (подобное поведение, кстати, согласуется с самой идеей применения слоёв).

Мы привели алгоритм вставки таблицы, когда она только создаётся. Часто возникает ситуация, что, конечно, разумнее, когда таблица создана заранее и хранится на диске в виде файла.

В этой ситуации при вставке после выбора «Insert»/«OLE-object» нужно выбрать переключатель «Вставка из файла». При нажатии на «ОК» появится стандартный запрос имени файла – окно выбора из содержимого жёсткого диска. Такая вставка уже не вызывает переход к самому Экселю – это удобно, когда его на самом деле пока на компьютере и нет.

При вставке через файл очень полезно установить ещё один «тонкий» переключатель – «Связать с файлом», он обеспечит более «продвинутую» работу. Теперь, изменяя этот файл таблицы в Экселе, вам не нужно заботиться о запуске Автокада – все изменения последний воспримет сразу после запуска и обновления внешних связей.

Имеем в виду и ещё одну небольшую особенность: для Автокада обычное дело – быстрое удаление объектов простым нажатием на клавишу DEL. Но данная возможность не работает с OLE-объектами, их удаляем – вырезаем уже через буфер обмена.

Таблица как гиперссылка

Есть и ещё один способ обеспечить в Автокаде вставку таблицы из Экселя – в качестве гиперссылки любого чертёжного объекта, обычно текстового. Здесь поступаем следующим образом:

  1. Выбираем объект.
  2. Идём в меню «Insert»/«Hyperlink» («Вставка»/«Гиперссылка»).

    Вставка таблицы как гиперссылки в Автокаде

    Вставка таблицы как гиперссылки в Автокаде

  3. В открывшемся окне с помощью кнопки «Файл» и следующего окна выбираем нужный файл.
  4. Выходим, присваивая объекту гиперссылку при нажатии на «ОК».

Теперь, когда мышка будет заходить на этот объект, она будет сопровождаться ещё и характерным значком гиперссылки с её адресом. Доступ к такому внешнему файлу будет возможен через контекстное меню объекта при выборе команды «Hyperlinks» – все гиперссылки (а их может быть у одного объекта несколько) будут приведены в выводимом рядом окне.

Другие варианты вставки

Некоторые версии Автокада предлагают другой способ решения поставленной задачи. Возможен и такой порядок работы:

  1. Переходим на вкладку «Вставка» на панели «Связывание и извлечение».
  2. Выбираем команду «Связь с данными».
  3. Выбираем таблицу Excel в открывшемся окне.

Можно воспользоваться и вкладкой «Аннотации»:

  1. Здесь напрямую выбираем команду «Таблица».
  2. Следом в окне «Вставка таблицы» указываем параметры вставки объекта «На основе связи с данными».

    Параметры вставки таблицы в Автокаде

    Параметры вставки таблицы в Автокаде

  3. При выборе любого способа экспорта из Экселя в Автокад будет открыто диалоговое окно «Диспетчер связей данных», в котором и нужно будет указать «Создать новую связь с данными Excel».
    Создать новую связь с данными Excel в Автокаде
  4. На следующем этапе вводим имя связи (желательно осмысленное, точно отражающее суть).

    Ввод имени связи с данными в Автокаде

    Ввод имени связи с данными в Автокаде

  5. Затем выбираем внешний файл (можно указать даже диапазон необходимых рабочих ячеек таблицы).
  6. При выходе из данного окна по «ОК» в окне «Диспетчера связей данных» отражается список всех связей чертежа. Если выбрать необходимую связь, соответствующая таблица будет отражена в виде миниатюры в поле ниже.

    Выбор связи данных в Автокаде

    Выбор связи данных в Автокаде

  7. Выходим из «Диспетчера связей» по кнопке «ОК».
  8. В Автокаде появляется необходимая таблица.

Обращаем внимание на то, что Автокад может предлагать ещё две полезные команды для работы с таблицами:

  • «Загрузить из источника» – позволяет обновить информацию в таблице Автокада из ранее связанной с ней и изменённой таблицы Экселя.
  • «Выгрузить в исходный файл» – обновление данных уже в файле Excel после изменения информации в таблице из AutoCAD.

Если в вашем распоряжении версия Автокада, поддерживающая OLE-технологию, то вы без труда сможете повысить уровень своей проектировочной работы, обеспечивая проведение всех расчётов во внешней Excel таблице. Дальше работа уже будет зависеть от уровня поддержки Автокадом OLE и от наличия на ПК самого Экселя, само собой.

На чтение 9 мин Просмотров 26.9к. Опубликовано 09.11.2017

MS Excel давно стал стандартом для работы с электронными таблицами. В статье рассматриваются способы программной выгрузки и загрузки из 1С в файлы Excel.

Существует несколько способов программной работы с файлами Excel из 1С. Каждый из них имеет свои преимущества и недостатки.

Содержание

  1. Обмен через табличный документ
  2. Обмен через OLE
  3. Использование COMSafeArray
  4. Обмен через ADO
  5. Выгрузка без программирования

Обмен через табличный документ

Данный способ простой. Его суть заключается в том, что объект ТабличныйДокумент имеет методы:

  • Записать(<ИмяФайла>, <ТипФайлаТаблицы>) для выгрузки данных в файл;
  • Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>) для загрузки данных из файла.

Внимание!

Метод Записать() доступен как на клиенте, так и на сервере. Метод Прочитать() доступен только на стороне сервера. Необходимо помнить об этом
при планировании клиент-серверного взаимодействия.


Рассмотрим пример сохранения табличного документа в файл. Необходимо любым способом создать и заполнить объект ТабличныйДокумент, а выгрузка в файл осуществляется всего лишь одной строкой:

ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);

Здесь ТабДок — сформированный табличный документ, ПутьКФайлу — имя файла для выгрузки, ТипФайлаТабличногоДокумента.XLSX — формат создаваемого файла. Поддерживаются следующие форматы Excel:

  • XLS95 — формат Excel 95;
  • XLS97 — формат Excel 97;
  • XLSX — формат Excel 2007.

Загрузка из файла осуществляется также достаточно просто:

ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);

Здесь ПутьКФайлу — путь к загружаемому файлу Excel. СпособЧтенияЗначенийТабличногоДокумента.Значение определяет, каким образом нужно интерпретировать данные, считываемые из исходного документа. Доступны варианты:

  • Значение;
  • Текст.

Обмен через OLE

Обмен через технологию OLE automation, пожалуй, самый распространенный вариант программной работы с файлами Excel. Он позволяет использовать весь функционал, предоставляемый Excel, но отличается медленной скоростью работы по сравнению с другими способами. Для обмена через OLE требуется установка MS Excel:

  • На компьютере конечного пользователя, если обмен происходит на стороне клиента;
  • На компьютере сервера 1С:Предприятие, если обмен происходит на стороне сервера.

Пример выгрузки:

// Создание COM-объекта
Эксель = Новый COMОбъект(«Excel.Application»);
// Отключение вывода предупреждений и вопросов
Эксель.DisplayAlerts = Ложь;
// Создание новой книги
Книга = Эксель.WorkBooks.Add();
// Позиционирование на первом листе
Лист = Книга.Worksheets(1);

// Запись значения в ячейку
Лист.Cells(НомерСтроки, НомерКолонки).Value = ЗначениеЯчейки;

// Сохранение файла
Книга.SaveAs(ИмяФайла);

// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;

Примеры чтения:

// —— ВАРИАНТ 1 ——

// Создание COM-объекта
Эксель = Новый COMОбъект(«Excel.Application»);
// Открытие книги
Книга = Эксель.Workbooks.Open(ПутьКФайлу);
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);

// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;

// Закрытие книги
Книга.Close(0);

// Закрытие Эксель и освобождение памяти
Эксель.Quit();
Эксель = 0;

// —— ВАРИАНТ 2 ——

// Открытие книги
Книга = ПолучитьCOMОбъект(ПутьКФайлу);
// Позиционирование на нужном листе
Лист = Книга.Worksheets(1);

// Чтение значения ячейки, обычно здесь располагается цикл обхода ячеек
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;

// Закрытие книги
Книга.Application.Quit();

Для обхода всех заполненных строк листа Excel можно использовать следующие приемы:

// —— ВАРИАНТ 1 ——
КоличествоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;
Для НомерСтроки = 1 По КоличествоСтрок Цикл
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
КонецЦикла;

// —— ВАРИАНТ 2 ——
НомерСтроки = 0;
Пока Истина Цикл
НомерСтроки = НомерСтроки + 1;
ЗначениеЯчейки = Лист.Cells(НомерСтроки, НомерКолонки).Value;
Если НЕ ЗначениеЗаполнено(ЗначениеЯчейки) Тогда
Прервать;
КонецЕсли;
КонецЦикла;

Вместо последовательного обхода всех строк листа можно выгрузить все данные в массив и работать с ним. Такой подход будет быстрее при чтении большого объема данных:

ВсегоКолонок = Лист.Cells(1, 1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;

Область = Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок));
Данные = Область.Value.Выгрузить();

В таблице ниже приведены наиболее востребованные свойства и методы для работы с Excel через OLE:

Действие Код Комментарий
Работа с приложением
Установка видимости окна приложения Эксель.Visible = Ложь;
Установка режима вывода предупреждений (выводить/не выводить) Эксель.DisplayAlerts = Ложь;
Закрытие приложения Эксель.Quit();
Работа с книгой
Создание новой книги Книга = Эксель.WorkBooks.Add();
Открытие существующей книги Книга = Эксель.WorkBooks.Open(ИмяФайла);
Сохранение книги Книга.SaveAs(ИмяФайла);
Закрытие книги Книга.Close(0);
Работа с листом
Установка текущего листа Лист = Книга.WorkSheets(НомерЛиста);
Установка имени Лист.Name = Имя;
Установка защиты Лист.Protect();
Снятие защиты Лист.UnProtect();
Установка ориентации страницы Лист.PageSetup.Orientation = 2; 1 — книжная, 2 — альбомная
Установка левой границы Лист.PageSetup.LeftMargin = Эксель.CentimetersToPoints(Сантиметры);
Установка верхней границы Лист.PageSetup.TopMargin = Эксель.CentimetersToPoints(Сантиметры);
Установка правой границы Лист.PageSetup.RightMargin = Эксель.CentimetersToPoints(Сантиметры);
Установка нижней границы Лист.PageSetup.BottomMargin = Эксель.CentimetersToPoints(Сантиметры);
Работа со строками, колонками, ячейками
Установка ширины колонки Лист.Columns(НомерКолонки).ColumnWidth = Ширина;
Удаление строки Лист.Rows(НомерСтроки).Delete();
Удаление колонки Лист.Columns(НомерКолонки).Delete();
Удаление ячейки Лист.Cells(НомерСтроки, НомерКолонки).Delete();
Установка значения Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;
Объединение ячеек Лист.Range(Лист.Cells(НомерСтроки, НомерКолонки), Лист.Cells(НомерСтроки1, НомерКолонки1)).Merge();
Установка шрифта Лист.Cells(НомерСтроки, НомерКолонки).Font.Name = ИмяШрифта;
Установка размера шрифта Лист.Cells(НомерСтроки, НомерКолонки).Font.Size = РазмерШрифта;
Установка жирного шрифта Лист.Cells(НомерСтроки, НомерКолонки).Font.Bold = 1; 1 — жирный шрифт, 0 — нормальный
Установка курсива Лист.Cells(НомерСтроки, НомерКолонки).Font.Italic = 1; 1 — курсив, 0 — нормальный
Установка подчеркнутого шрифта Лист.Cells(НомерСтроки, НомерКолонки).Font.Underline = 2; 2 — подчеркнутый, 1 — нет

Для того, чтобы узнать какое свойство нужно менять или какой метод вызвать можно воспользоваться макросами Excel. Если записать макрос с требуемыми действиями, то после можно посмотреть программный код на VBA записанного макроса.

Использование COMSafeArray

При выгрузке больших объемов данных из 1С в Excel для ускорения можно использовать объект COMSafeArray. Согласно определению из синтакс-помощника, COMSafeArray — объектная оболочка над многомерным массивом SafeArray из COM. Позволяет создавать и использовать SafeArray для обмена данными между COM-объектами. Проще говоря, это массив значений, который можно использовать для обмена между приложениями по технологии OLE.

// Создание COMSafeArray
МассивКом = Новый COMSafeArray(«VT_Variant», ВсегоКолонок, ВсегоСтрок);
// Заполнение COMSafeArray
Для Стр = 0 По ВсегоСтрок1 Цикл
Для Кол = 0 По ВсегоКолонок1 Цикл
МассивКом.SetValue(Кол, Стр, Значение);
КонецЦикла;
КонецЦикла;
// Присвоение области листа Excel значений из COMSafeArray
Лист.Range(Лист.Cells(1, 1), Лист.Cells(ВсегоСтрок, ВсегоКолонок)).Value = МассивКом;

Обмен через ADO

Файл Excel при обмене через ADO представляет собой базу данных, к которой можно обращаться при помощи SQL-запросов. Установка MS Excel не требуется, но обязательно наличие драйвера ODBC, при помощи которого будет осуществляться доступ. Используемый драйвер ODBC определяется при указании строки соединения к файлу. Обычно требуемый драйвер уже установлен на компьютере.

Обмен через ADO заметно быстрее обмена через OLE, но при выгрузке нет возможности использовать функционал Excel для оформления ячеек, разметки страниц, задания формул и т.д.

Пример выгрузки:

// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»);

// Установка строки соединения
Соединение.ConnectionString = «
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=»+ИмяФайла+«;
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;»;
Соединение.Open(); // Открытие соединения

// Создание COM-объекта для команды
Команда = Новый COMОбъект(«ADODB.Command»);
Команда.ActiveConnection = Соединение;

// Присвоение текста команды для создания таблицы
Команда.CommandText = «CREATE TABLE [Лист1] (Колонка1 char(255), Колонка2 date, Колонка3 int, Колонка4 float)»;
Команда.Execute(); // Выполнение команды

// Присвоение текста команды для добавления строки таблицы
Команда.CommandText = «INSERT INTO [Лист1] (Колонка1, Колонка2, Колонка3, Колонка4) values (‘абвгдеё’, ‘8/11/2017’, ‘12345’, ‘12345,6789’)»;
Команда.Execute(); // Выполнение команды

// Удаление команды и закрытие соединения
Команда = Неопределено;
Соединение.Close();
Соединение = Неопределено;

Для создания нового листа и формирования его структуры можно воспользоваться объектами ADOX.Catalog и ADOX.Table. В этом случае код примет вид:

// Создание COM-объекта для работы с книгой
Книга = Новый COMОбъект(«ADOX.Catalog»);
Книга.ActiveConnection = Соединение;

// Создание COM-объекта для работы со структурой данных на листе
Таблица = Новый COMОбъект(«ADOX.Table»);
Таблица.Name = «Лист1»;
Таблица.Columns.Append(«Колонка1», 202);
Таблица.Columns.Append(«Колонка2», 7);
Таблица.Columns.Append(«Колонка3», 5);
Таблица.Columns.Append(«Колонка4», 5);

// Создание в книге листа с описанной структурой
Книга.Tables.Append(Таблица);
Таблица = Неопределено;
Книга = Неопределено;

В приведенном примере в методе

Таблица.Columns.Append(«Колонка1», 202);

во втором параметре указывается тип колонки. Параметр необязательный, вот некоторые значения типа колонки:

  • 5 — adDouble;
  • 6 — adCurrency;
  • 7 — adDate;
  • 11 — adBoolean;
  • 202 — adVarWChar;
  • 203 — adLongVarWChar.

Пример чтения:

// Создание COM-объекта для соединения
Соединение = Новый COMОбъект(«ADODB.Connection»);

// Установка строки соединения
Соединение.ConnectionString = «
|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source=»+ИмяФайла+«;
|Extended Properties=»»Excel 12.0 XML;HDR=YES»»;»;
Соединение.Open(); // Открытие соединения

// Создание COM-объекта для получения выборки
Выборка = Новый COMОбъект(«ADODB.Recordset»);
ТекстЗапроса = «SELECT * FROM [Лист1$]»;

// Выполнение запроса
Выборка.Open(ТекстЗапроса, Соединение);

// Обход результата выборки
Пока НЕ Выборка.EOF() Цикл
ЗначениеКолонки1 = Выборка.Fields.Item(«Колонка1»).Value; // Обращение по имени колонки
ЗначениеКолонки2 = Выборка.Fields.Item(0).Value; // Обращение по индексу колонки
Выборка.MoveNext();
КонецЦикла;

Выборка.Close();
Выборка = Неопределено;
Соединение.Close();
Соединение = Неопределено;

В строке соединения параметр HDR определяет как будет восприниматься первая строка на листе. Возможны варианты:

  • YES — первая строка воспринимается как названия колонок. К значениям можно обращаться по имени и по индексу колонки.
  • NO — первая строка воспринимается как данные. К значениям можно обращаться только по индексу колонки.

В приведенных примерах рассмотрено лишь несколько объектов ADO. Объектная модель ADO состоит из следующих объектов:

  • Connection;
  • Command;
  • Recordset;
  • Record;
  • Fields;
  • Stream;
  • Errors;
  • Parameters;
  • Properties.

Выгрузка без программирования

Для сохранения данных из 1С в Excel не всегда целесообразно прибегать к программированию. Если в режиме Предприятия пользователь может отобразить требуемые для выгрузки данные, то, их возможно сохранить в Excel без программирования.

Для сохранения табличного документа (например, результата отчета) можно вызвать команду Сохранить или Сохранить как… главного меню.

Сохранение табличного документа 1С

В открывшемся окне требуется выбрать каталог, имя и формат сохраняемого файла.

Для сохранения данных динамических списков (например, списка номенклатуры) необходимо:

  1. Вывести данные в табличный документ при помощи команды Еще ⇒ Вывести список…;
  2. Сохранить табличный документ в требуемый формат.

Сохранение динамического списка

7 / 7 / 4

Регистрация: 07.07.2011

Сообщений: 574

1

24.01.2019, 15:52. Показов 1684. Ответов 6


Студворк — интернет-сервис помощи студентам

Здравствуйте. Я вывожу информацию в Excel через Ole и 90% заказчиков ругаются на то, что у меня программа не работает при выводе в ексель. Но по факту у них или офис не активированный или Windows пиратская — после попытки вывести в ексель всплывает окно «Эта копия Microsoft Office не активирована». Как Вы думаете, можно ли как то это окно обогнуть и почему не активированный офис не разрешает вывести ексель? Причем импорт данных из ексель идет нормально, а экспорт только на активированном офисе.

Миниатюры

Вывод в Excel через Ole в не активированном офисе и/или пиратской ОС
 



0



Модератор

8382 / 5583 / 2275

Регистрация: 21.01.2014

Сообщений: 23,959

Записей в блоге: 3

24.01.2019, 16:19

2

Цитата
Сообщение от nnnikotinnn995
Посмотреть сообщение

можно ли как то это окно обогнуть

Можно. Купить MS Office. Другие варианты на этом форуме не обсуждаются!

Цитата
Сообщение от nnnikotinnn995
Посмотреть сообщение

почему не активированный офис не разрешает вывести ексель?

Потому, что при запуске неактивированной копии всегда появится сначала это окно — потом сам Ексель… А работа с OLE подразумевает работу безо всяких промежуточных окон…



0



7 / 7 / 4

Регистрация: 07.07.2011

Сообщений: 574

24.01.2019, 16:32

 [ТС]

3

Еще бы объяснить это русским заказчикам (которые все хотят бесплатно).



0



TrollHammer

25.01.2019, 01:02

Не по теме:

По опыту работы с OLE — лучше не привязываться к конкретным программам. Берем библиотеку (а их масса, на любой вкус и цвет), которая независимо, установлен офис или нет, формирует рабочую книгу/документ и сохраняет, а потом открывай, чем угодно.



0



7 / 7 / 4

Регистрация: 07.07.2011

Сообщений: 574

09.02.2019, 15:10

 [ТС]

5

Цитата
Сообщение от TrollHammer
Посмотреть сообщение

Не по теме:
По опыту работы с OLE — лучше не привязываться к конкретным программам. Берем библиотеку (а их масса, на любой вкус и цвет), которая независимо, установлен офис или нет, формирует рабочую книгу/документ и сохраняет, а потом открывай, чем угодно.

Меня достали заказчики — у всех не лицензионный офис (кроме тех у кого Windows xp или они «исключительные»). А эти библиотеки позволяют сохранить раскраску ячеек, размер шрифта и все остальное? Приведите пожалуйста пример подобных библиотек? Причем все заказчики хотят загружать данные из ексель (иногда из ворд). Начиная с Windows 7 все загружается без проблем, а вот например на Windows XP (на очень старом компе) полезли ошибки (я еще не разобрался, но похоже офис 2003 не воспринимает .xlsx). Что делать?

Добавлено через 23 минуты
Похоже Windows XP с офис 2003 может ругаться даже на .xls. Причем на одни файлы он ругается а на другие — нет. Видимо с OLE нужно менять минимальные требования (В том числе по ОС).



0



Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32517 / 20998 / 8120

Регистрация: 22.10.2011

Сообщений: 36,265

Записей в блоге: 7

09.02.2019, 15:16

6

Для стабильной работы MS Office на XP нужна не 2003, а 2002 версия (она же OfficeXP). Ни разу с ней не видел никаких сбоев, а когда устанавливали 2003-ий — то начинались проблемы (и при работе с самим Оффисом и через OLE)



0



1189 / 689 / 329

Регистрация: 22.02.2018

Сообщений: 1,983

Записей в блоге: 2

10.02.2019, 09:20

7

Цитата
Сообщение от nnnikotinnn995
Посмотреть сообщение

Приведите пожалуйста пример подобных библиотек?

Например, FlexCell от TMS, триалки хватает за глаза, очень хорошо документирована, проблем не испытывал.



1



Связывание и внедрение объектов (OLE) – это технология, разработанная Microsoft, которая позволяет приложениям Office взаимодействовать с другими приложениями. Это позволяет одному приложению для редактирования отправить часть документа в другие приложения, а затем импортировать или вернуть его вместе с другим содержимым.

Например, если Excel пытается связаться с PowerPoint, он отправляет команду объекту OLE и ожидает ответа от PowerPoint.

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

Microsoft Excel ожидает, пока другое приложение завершит действие OLE

Существует три распространенных причины того, что Microsoft Excel ожидает, пока другое приложение завершит сообщение OLE actio n:

  1. Добавление в приложение слишком большого количества надстроек, из которых один или несколько повреждены.
  2. Excel пытается открыть файл, созданный в каком-либо другом приложении, или извлечь данные из активного
  3. С помощью параметра «Отправить как вложение» в Excel можно отправить лист Excel по электронной почте.

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

Однако, если проблема не устранена, вы можете попробовать любое из приведенных ниже решений.

1. Включение функции «Игнорировать другие приложения, использующие DDE».

1] Откройте лист Excel и перейдите в меню «Файл». В меню Файл выберите Параметры.

2] Откроется диалоговое окно параметров Excel. Перейдите на вкладку «Дополнительно» и прокрутите вниз до области «Общие». Там проверьте ‘Игнорируйте другие приложения, которые используют динамический обмен данными (DDE)‘.

Это должно уменьшить часть нагрузки на приложение и сделать его легче. Попробуйте перезапустить Excel после этого.

2. Отключение надстроек

1] Откройте лист Excel и перейдите в меню «Файл». В меню «Файл» выберите «Параметры».

2] Появится диалоговое окно «Параметры Excel». На вкладках слева нажмите Надстройки.

3] В нижней части этого окна находится окно управления. Выберите надстройки Excel и нажмите кнопку «Перейти» рядом с ней. Это заполняет список надстроек.

4] Снимите все флажки рядом с надстройками в поле Доступные надстройки и нажмите кнопку ОК.

Это отключает все надстройки, тем самым снижая нагрузку на приложение.

3: Использование других методов для прикрепления книги Excel

Использование встроенной в Excel опции «Отправить с помощью электронной почты» для отправки книги в виде вложения также может привести к отображению вышеуказанной ошибки OLE. Но вы можете решить эту проблему, прикрепив книгу Excel к своему сообщению через приложение электронной почты. Вы можете отправить свою книгу, прикрепив ее в виде файла к сообщению электронной почты в Outlook 2013/2010 или Hotmail. Фактически, вы можете использовать любое почтовое приложение на ваш выбор, чтобы обойти проблему.

Решения, обсуждаемые в этом посте, являются одними из самых эффективных и популярных, используемых для устранения ошибки Excel, упомянутой выше в обсуждении. Надеюсь, что-то здесь поможет вам.

Понравилась статья? Поделить с друзьями:
  • Как в mysql загрузить таблицы excel
  • Как в ms word создать диаграмму по исходной таблице
  • Как в ms word разбить абзац на два абзаца
  • Как в ms word перейти к другой строке не разрывая абзац
  • Как в ms word задается размер бумаги