2015-05-21 1 views
0

Я написал макрос в PowerPoint, который в рамках своего процесса преобразует связанную диаграмму в презентацию PowerPoint во встроенную диаграмму путем копирования источника Excel и вставка скопированной диаграммы в качестве объекта OLE - конкретной командой является «sldComponent.Shapes.PasteSpecial (ppPasteOLEObject)».PowerPoint 2013 «PasteSpecial» не будет вставлять диаграмму Excel как объект OLE

До сегодняшнего дня это работало нормально во всех версиях с 2003 по 2010 год. Однако при попытке запустить эту функцию в 2013/365, я продолжаю получать ошибку во время выполнения: «Указанный тип данных недоступен» (-2147188160/80048240). Я также заметил, что на веб-странице Microsoft Developers Reference «ppPasteOLEObject» больше не отображается в качестве приемлемого типа данных для метода PasteSpecial (при использовании с коллекцией Shapes).

Я нашел несколько способов программно вставить диаграмму в качестве изображения, но всякий раз, когда я нажимаю на вставленную диаграмму и пытаюсь получить доступ к данным, я продолжаю получать сообщение «Связанный файл недоступен». Я хочу, чтобы данные были полностью автономными, поэтому пользователь PowerPoint может редактировать его без ссылки на исходный файл Excel. Интересно отметить, что когда я останавливаю макрос PowerPoint на строке с ошибкой, а затем вручную нажимаю «Вставить» на ленте, скопированная диаграмма делает пастой, полностью встроенной с доступными данными, в активный слайд - поэтому диаграмма копируется в Буфер обмена; макрос PowerPoint просто не может прочитать и вставить его по какой-либо причине. Еще более интересно (читайте: разочаровывает), команда PasteSpecial (ppPasteOLEObject) будет работать для таблиц, скопированных из Excel, то есть диапазонов ячеек, но не для графиков.

Что случилось? Как использовать код VBA в PowerPoint 2013 для встраивания (т. Е. Вставить ранее созданную, автономную диаграмму Excel, включая все данные прямо в слайде презентации) диаграмму Excel в новой версии?

ADD: Следует также отметить, что команда, используемая для получения диаграммы из исходного листа в Excel, представляет собой «xlCopySheet.ChartObjects (1). Выберите», затем «appExcel.Selection.Copy». Проблема в том, что выбранный синтаксис Copy не захватывает весь график, включая данные, а только дисплей? Каков правильный синтаксис копирования, который можно использовать здесь?

ADD 2: Дополнительная спецификация: оригинальный макрос был сохранен и работал как с Excel, так и с PowerPoint в режиме совместимости (97-2003), хотя самими приложениями являются версии 2013/Office 365.

+0

«Если я скопировать таблицу в Excel и использовать в PowerPoint VB Immediate Window ....» Что такое «Immediate Window» ? Отличается ли он от обычного экрана редактора VB, активированного ALT + F11? –

ответ

0

Если вы вставляете диаграмму в качестве «графического объекта Microsoft Office», диаграмма вставляется в виде диаграммы Excel. Вы можете отформатировать его в PowerPoint с помощью вкладки «Инструменты диаграммы» ленты Excel, которые отображаются в PowerPoint. Если вы нажмете любую из кнопок редактирования/выбора данных, она откроет данные в Excel.

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

Если скопировать таблицу в Excel и использовать в PowerPoint VB Immediate Window

activepresentation.Slides(3).Shapes.PasteSpecial ppPasteOLEObject 

я получаю второе поведение.

Вы можете попытаться скопировать таблицу с помощью этого:

xlCopySheet.ChartObjects(1).Chart.Copy 
+0

Из-за жуткости с диаграммами Excel в PowerPoint я работаю над рутиной, которая точно не скопирует диаграмму Excel, а вместо этого создаст диаграмму в PowerPoint с или без того же формата и найдет данные Excel, используемые в Excel диаграмму и вставить ее в PowerPoint DataSheet с или без ссылок на исходные данные Excel. –

+1

Ваш первый вариант звучит многообещающе; Мне не нужно вставлять всю рабочую книгу источника, просто чтобы сделать сами данные доступными. Какой тип данных вы бы использовали с «PasteSpecial» в VBA для вставки диаграммы в качестве графического объекта Microsoft Office? –

+0

BTW, используя синтаксис «ChartObjects (1) .Chart.Copy»; Я получаю сообщение об ошибке «Копировать метод класса диаграммы не удалось». –

Смежные вопросы