2017-03-16 38 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