2011-09-27 39 views
0

我需要在PowerPoint 2003中複製行(只是爲了重新使用它們的格式)。試圖做的事:如何在PowerPoint 2003中將行復制到VBA中?

Dim oPPTRow As PowerPoint.Row 

Set oPPTRow = oPPTFile.Slides(SlideNum).Shapes(1).Table.Rows(2) 
oPPTFile.Slides(SlideNum).Shapes(1).Table.Rows.Add (-1) 
oPPTFile.Slides(SlideNum).Shapes(1).Table.Rows(oPPTTable.Rows.Count) = oPPTRow 

但它不起作用。有沒有其他辦法可以達到同樣的效果?

回答

1

Rows.Add方法允許您在任何喜歡的行之前插入新行。新插入的行將選取您在其之前插入的行的格式。試試這個(一定要選擇TABEL形狀第一):

Sub AddNewRow() 
    Dim oTbl As Table 
    Dim oSh As Shape 

    Set oSh = ActiveWindow.Selection.ShapeRange(1) 
    Set oTbl = oSh.Table 

    With oTbl 
     .Rows.Add (2) 
    End With 
End Sub 

傳遞-1作爲參數。新增強制PPT在表的末尾添加行;新的單元格將被格式化爲與它們上面的單元格相同的格式(也就是之前最低行的單元格)。

如果你需要拿起從其他行的格式,我想你可能需要做一些事情,如:

Sub AddNewRow() 
    Dim oTbl As Table 
    Dim oSh As Shape 
    Dim x As Long 
    Dim lNewRow As Long 

    Set oSh = ActiveWindow.Selection.ShapeRange(1) 
    Set oTbl = oSh.Table 

    With oTbl 
     .Rows.Add (-1) 
     lNewRow = .Rows.Count 
     ' format the new row to match the cells in row two 
     With .Rows(lNewRow) 
      ' step across the row cell by cell 
      For x = 1 To oTbl.Columns.Count 

       ' pick up row two formatting 
       oTbl.Cell(2, x).Shape.PickUp 
       ' apply it to new row's cell x 
       .Cells(x).Shape.Apply 

       ' do the same for cell's text formatting 
       oTbl.Cell(2, x).Shape.TextFrame.TextRange.Font.Name = oTbl.Cell(2, x).Shape.TextFrame.TextRange.Font.Name 
       ' Use above pattern to pick up/apply font bold, ital, size, color etc as needed 
      Next 
     End With 
    End With 
End Sub 
+0

謝謝你,史蒂夫。不過,我需要有合併單元格,特定寬度等行。可能,我應該複製/粘貼通過剪貼板? –

+0

值得一試(實際上,如果你得到它的工作,請在這裏發佈代碼)。合併的細胞是一種痛苦。我不知道有什麼方法直接檢測它們。 –

相關問題