2014-08-28 3 views
1

Я пытаюсь получить серию таблиц Excel в PowerPoint и успешно создал макрос для этого в Office 2013, но я пытаюсь адаптировать его к Office 2010.Лучший способ скопировать таблицу Excel в PowerPoint (2010)?

Проблема в том, что при вставке таблицы в PowerPoint, Кажется, что для Office 2010 требуется уникальный/другой код.

Первоначально я имел:

'Copying Tables to PowerPoint 
Set PPApp = GetObject(, "Powerpoint.Application") 
Set PPPres = PPApp.ActivePresentation 
PPApp.ActiveWindow.ViewType = ppViewSlide 

For i = 0 To Table3 
    Sheets("Charts").Range(ChartStart, ChartEnd).Offset(i * Row2, 0).Copy 
    Set PPSlide = PPPres.Slides(1) 
    Set PPShape = PPSlide.Shapes.Paste 
    PPShape.Name = "Table" & i 

Но с тех пор было сообщено исправление для 2010 версий является использование .PasteSpecial поэтому у меня есть:

'Copying Tables to PowerPoint 
Set PPApp = GetObject(, "Powerpoint.Application") 
Set PPPres = PPApp.ActivePresentation 
PPApp.ActiveWindow.ViewType = ppViewSlide 

For i = 0 To Table3 
    Sheets("Charts").Range(ChartStart, ChartEnd).Offset(i * Row2, 0).Copy 
    Set PPSlide = PPPres.Slides(1) 
    Set PPShape = PPSlide.Shapes.PasteSpecial(dataType:=10) 
    PPShape.Name = "Table" & i 

Дело использует DATATYPE: = 10 путы диаграмму в PowerPoint в неправильном формате для моих целей. Мне нужно получить таблицу в PowerPoint в виде таблицы, используя ppPasteHTML, однако, когда я пытаюсь ввести это в функцию PasteSpecial, я получаю код ошибки, говорящий, что плата Clip пуста.

Кто-нибудь знает, если «ppPasteHTML» имеет числовой эквивалент для параметра DataType в PasteSpecial? Или другой способ получить таблицу Excel в PowerPoint в виде таблицы для Office 2010?

Спасибо!

+0

возможный дубликат [Таблица копирования проблем с Excel в PowerPoint с VBA в Excel 2010, но не Excel 2013?] (http: // stackoverflow.com/questions/25556397/trouble-copy-table-from-excel-to-powerpoint-with-vba-in-excel-2010-but-not-ex) –

+2

Вы ** действительно ** не должны задавать один и тот же вопрос дважды за один день ... –

+0

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

ответ

1

Этот должны сделать это:.

Просто убедитесь, что вы загружаете библиотеки PowerPoint в Excel

Tools-> References -> "Microsoft PowerPoint nN.N библиотека объектов"

Также я предполагаю, что Table3, ChartStart, ChartEnd & Row2 установили значения

Dim pptApp As PowerPoint.Application 
Dim pptPres As PowerPoint.Presentation 
Dim pptSlide As PowerPoint.Slide 

'Open PowerPoint and create a new presentation. 
Set pptApp = New PowerPoint.Application 
Set pptPres = pptApp.Presentations.Add 

Set pptSlide = pptPres.Slides.Add(1, ppLayoutBlank) 

For i = 0 To Table3 
Set objRange = Worksheets("Charts").Range(ChartStart, ChartEnd).Offset(i * Row2, 0) 
objRange.Copy 
pptSlide.Shapes.PasteSpecial DataType:=ppPasteHTML, Link:=msoFalse 
Next i 

For j = 1 To pptSlide.Shapes.Count 
    With pptSlide.Shapes(j) 
    .Name = "Table" & j 
    End With 
Next j 

Set pptSlide = Nothing 
Set pptPres = Nothing 
Set pptApp = Nothing 
0

Длинный/числовой эквивалент для ppPasteHtml является 8. Вы можете запросить это для себя, открыв VBE в PowerPoint и сделав ?ppPasteHTML в окне Immediate или Debug.Print ppPasteHtml в модуле/подпрограмме.

Использование раннего связывания, попробуйте:

pptSlide.Shapes.PasteSpecialy DataType:=ppPasteHtml 

Или, используя позднее связывание:

pptSlide.Shapes.PasteSpecial DataType:=8 

С другой стороны, я видел несколько other q's where people have problems pasting from one application to another application (например, из Excel в PowerPoint и т.д.) в тех случается, что иногда единственным способом решения является использование объекта CommandBars, однако я не уверен, есть ли метод вставки «HTML» из CommandBars.

pptSlide.Parent.ExecuteMso "PasteExcelTableSourceFormatting" 

Вот некоторые другие возможные MSO команды, которые вы могли бы использовать, но, как я сказал, что я не вижу один, который появляется, чтобы вставить HTML, хотя этот список для Office 2010:

enter image description here

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