簡體   English   中英

使用 VBA 替換 Excel 中的 Powerpoint 數據

[英]Replacing Powerpoint data from Excel using VBA

我在 excel 中有一些“表格”,我每周都會導出到 powerpoint(我說“表格”,因為它們實際上只是單元格范圍,而不是表格)。 現在我有一個宏,可以每周從 powerpoint 中刪除所有形狀,然后使用不同的宏將表格導出到 powerpoint。 這樣做的問題是它會刪除幻燈片中的所有內容,包括幻燈片上的標題和評論。 所以現在我正在嘗試編寫代碼來替換前幾周的表格。 到目前為止,這是我擁有的代碼,但是當我到達時它不起作用

pptpress.Slides(1).Shapes("Picture 8").Table.Cell(r, c).Shape.TextFrame.TextRange = Sheet2.Cells(r, c).Value

我認為它不起作用,因為單元格范圍實際上不是表格? 無論如何,有人對如何替換前幾周的數據有任何建議嗎? 我在這里掙扎

Sub UpdateTables()

    Dim pptapp As New PowerPoint.Application
    Dim pptpress As PowerPoint.Presentation
    
    Dim left As Double
    Dim top As Double
    Dim height As Double
    Dim width As Double
    
    Dim r As Integer
    Dim c As Integer
    
    Set pptpress = pptapp.Presentations.Open("xxxxxx")

    'Table update
    For r = 4 To 30
    
     For c = 2 To 12
     
        pptpress.Slides(1).Shapes("Picture 8").Table.Cell(r, c).Shape.TextFrame.TextRange = Sheet2.Cells(r, c).Value
        
    Next c
   Next r


End Sub

我認為它不起作用,因為單元格范圍實際上不是表格?

是的。 形狀的名稱是“圖片 8”這一事實也是一個贈品。 很可能,這是一張粘貼到 PPT 幻燈片中的 EMF/WMF/etc 圖片。

正如@Dan 所建議的,插入一個新的表格形狀並使用它可能是最簡單的。 或者,如果您需要保留特定的表格格式,請手動將表格添加到幻燈片中,對其進行格式化,然后讓您的代碼將數據放入其中。

為了替換舊形狀(或在您的情況下:表格),您可以使用標記或時間戳來識別需要刪除的內容。 一個很好的方法是 PowerPoint 中的標簽 您可以將這些附加到演示文稿、幻燈片和形狀(甚至更多)。 它們對用戶不可見,但可以通過代碼(例如 VBA)讀取/寫入。

這是您需要查找的內容: https://docs.microsoft.com/en-gb//office/vba/api/powerpoint.tags

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM