2017-03-16 39 views
1

我有以下代码块,它循环显示工作簿中的表格名称数组。它是一个来自调用过程(回调)的ParamArray。它复制每张表并将其粘贴到ppt幻灯片。然后它创建一个文本框,这是表格的标题。我使用目标样式(我认为是默认值)粘贴它,因为我想使用ppt样式。我从Excel粘贴的对象是一张桌子。粘贴后如何更改表格的样式并使第一行变为粗体?更改PowerPoint表格样式似乎没有很好的记录。我尝试了下面的评论部分,但它没有奏效。谢谢!Excel中的PowerPoint格式表格样式 - 2013

For i = LBound(vObjects(0)) To UBound(vObjects(0)) 
     Set practice = ActiveWorkbook.Worksheets(Range("T_" & vObjects(0)(i)).Parent.Name).ListObjects("T_" & vObjects(0)(i)) 
     practice.Range.Copy 
     PPT_Slide.Shapes.Paste 'Special DataType:=ppPasteOLEObject, Link:=msoTrue 
     Set PPT_Shape = PPT_Slide.Shapes(PPT_Slide.Shapes.Count) 
     PPT_Shape.Name = "OBJ_" & vObjects(0)(i) 
'  With PPT_Shape 
'   .ApplyStyle "{C083E6E3-FA7D-4D7B-A595-EF9225AFEA82}", True 
'   .Rows(1).Font.Bold = True 
'  End With 
     Set objPPT_MilestoneTextbox = PPT_Slide.Shapes.AddTextbox(1, Left:=320, Top:=HorizontalTop, Width:=300, Height:=50).TextFrame.TextRange 
     With objPPT_MilestoneTextbox 
      .Text = vObjects(0)(i) 
      .Font.Size = 14 
      .Font.Bold = True 
      .ParagraphFormat.Alignment = 2 
     End With 
     Set PPT_Shape = PPT_Slide.Shapes(PPT_Slide.Shapes.Count) 
     PPT_Shape.Name = "CAP_" & vObjects(0)(i) 
    Next i 
    Application.CutCopyMode = False 

回答

1

这MS页的文档表格样式IDS 2010年PPT(并指出,他们可能不是后续版本相同):

https://code.msdn.microsoft.com/office/PowerPoint-2010-Interact-ea2fbe1b

但你需要应用的样式到形状的.Table对象,而不是形状本身。尝试像这样修改您的代码:

Dim otbl As Table 
Set PPT_Shape = PPT_Slide.Shapes(PPT_Slide.Shapes.Count) 
Set otbl = PPT_Shape.Table 
With otbl 
    .ApplyStyle "{C083E6E3-FA7D-4D7B-A595-EF9225AFEA82}", True 
End With 
+0

完美!谢谢,史蒂夫。 – Brian