2015-10-30 3 views
0

У меня есть ряд слайдов с диаграммами Excel, которые необходимо отформатировать, чтобы их лучше отображать в PPT (увеличить размер шрифта).Цикл PowerPoint для отдельных номеров слайдов

Я понял, приведенный ниже код, но может не способ вставить петлю так что этот код применяется только к слайдам 36 до 45.

Я попытался следующий код, но не работает, я думаю, это потому, что он ссылается на ActivePresentation, в то время как мой код форматирования ссылается на ActiveWindow, но у меня недостаточно информации PPT VBA, чтобы исправить это.

Dim oPresentation As Presentation 
Set oPresentation = ActivePresentation 

Dim oSlide As Slide 
Dim oSlides As SlideRange 
Dim oShape As Shape 
Dim slideNumber As Integer 

For slideNumber = 36 To 45 

>>>REST OF MY CODE INSERTED HERE<<< 

Next slideNumber 

Sub FormatChartPPT() 

'PURPOSE: Increase font size of chart data labels, legend, axes values and categories 

Dim ocht As Chart 
Dim i As Integer 
Dim shp As Shape 


'Auto select chart 
    For Each shp In ActiveWindow.Selection.SlideRange.Shapes 
    With shp 
     If .HasChart Then .Select 
    End With 
    Next shp 


'Apply to selected chart 
Set ocht = ActiveWindow.Selection.ShapeRange(1).Chart 


'Format data labels 
For i = 1 To ocht.SeriesCollection.Count 

If ocht.SeriesCollection(i).HasDataLabels Then 

With ocht.SeriesCollection(i).DataLabels.Font 
.Size = 14 
End With 

End If 

Next i 


'Format legend 
If ocht.HasLegend Then 
With ocht.Legend.Font 
.Size = 14 
End With 
End If 

'Format axis values 
With ocht.Axes(xlValue).TickLabels.Font 
.Size = 14 
End With 

'Format axis category 
With ocht.Axes(xlCategory).TickLabels.Font 
.Size = 14 
End With 


End Sub 

ответ

1

Вы должны создать новый метод, который принимает слайд и форматирует формы на нем, как хотелось бы. Скажем, мы определяем его как Sub FormatShapes(sld As Slide) (см. Код позже). Этот метод должен затем быть вызван в главном цикле, например .:

For SlideNumber = 36 To 45 
    FormatShapes ActivePresentation.Slides(SlideNumber) 
Next SlideNumber 

FormatShapes может выглядеть следующим образом:

Sub FormatShapes(sld As Slide) 
    Dim ocht As Chart 
    Dim shp As Shape 

    For Each shp In sld.Shapes 
     If shp.HasChart Then 
      Set ocht = shp.Chart 
      ... Do shape chart formatting using ocht ... 
     End If 
    Next shp 
End Sub 
+0

спасибо, я не знал о таком методе, но это работает отлично! – Tony

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