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