有什麼方法可以在 PowerPoint 中設定連結 Excel 表格的樣式嗎?

有什麼方法可以在 PowerPoint 中設定連結 Excel 表格的樣式嗎?

我的 PPT (PowerPoint 2010) 中有一個連結表,它來自 Excel 2010 工作表的一部分。當我更新 Excel 中的資料時,PPT 中的表格會自動更新,效果很好,符合預期。

現在的問題是如何使用 PowerPoint 2010 的內建樣式來設定此連結表的樣式。因此,當您插入常規 PowerPoint 表格時,功能區上的「表格工具」下有兩個標籤:「設計」和「佈局」。在「設計」標籤下的「表格樣式」部分中,您可以使用一堆內建表格樣式快速設定表格樣式。

但是,當我有 Excel 中的連結表時,我沒有這些選項:當我選擇該表時,功能區上的「表格工具」下方僅顯示一個選項卡,即「格式」。而且我無法使用 PowerPoint 的任何內建表格樣式。與其他常規 PowerPoint 表格相比,這使得連結表格在樣式上不一致。

答案1

不幸的是,內建樣式僅適用於在 PowerPoint 中建立的樣式表,而不能連結或貼上。

一個可能會或可能不會產生您可接受的結果的拼湊方法是,按照您選擇的樣式建立一個空的 PowerPoint 表格,然後覆寫連結的 Excel 表格。在 Excel 和 PowerPoint 之間進行一些來回調整可以產生合理的對齊方式、字體匹配等。

在此輸入影像描述

答案2

關於連結內容的一般情況是,PowerPoint 不知道它是什麼;它有內容的圖片(由生成內容的應用程式傳遞給它......在本例中為 Excel),以及包含實際資料的文件的連結。如果您想編輯內容,它能為您做的就是在原始應用程式中啟動它。

最好的選擇可能是先在 Excel 中設定表格格式。

如果您想要符合特定的 PPT 樣式,請在 PPT 中建立表格,然後將其複製/貼上到 Excel 中。您需要先用文字填滿所有儲存格,否則 Excel 會將其預設文字格式套用到空白儲存格。根據需要調整列寬,新增真實資料並儲存檔案。然後從它連結回 PPT。

答案3

感謝您的回覆。但是,在我看來,最好的解決方案仍然是在 PPT 中設定表格樣式並在 Excel 中編輯資料。因此,我編寫了一小段 VBA 程式碼來將資料從 Excel 傳輸到 PPT,它非常適合我。

這是代碼:

Option Explicit
Option Base 1

Const WB_FINANCIALS As String = "\CPMR Financials.xlsm"
Const WS_SALES As String = "Sales Forecast"

Const SLIDE_SALES_FORECAST As String = "SalesForecast"

Const TABLE_SALES_FORECAST As String = "TableSalesForecast"

Const R_CPMA_COM_SALES As String = "cpma_complete_sales"
Const R_CPMA_LARGE_ATC_SALES As String = "cpma_large_atc_sales"
Const R_CPMA_REGULAR_ATC_SALES As String = "cpma_regular_atc_sales"
Const R_CPMA_REPORTS_SALES As String = "cpma_reports_sales"
Const R_RXR_REPORTS_SALES As String = "rxr_reports_sales"
Const R_TOTAL_SALES As String = "total_sales"


Sub ReadFinancialsBook()
    Dim XLApp As Excel.Application
    Dim FBook As Excel.Workbook
    Dim SalesForecast As Excel.Worksheet

    Set XLApp = Excel.Application
    Set FBook = XLApp.workbooks.Open(FileName:=ActivePresentation.Path + WB_FINANCIALS, ReadOnly:=True)
    Set SalesForecast = FBook.Worksheets(WS_SALES)

    Dim PPT As Presentation
    Dim SalesSlide As Slide

    Set PPT = ActivePresentation
    Set SalesSlide = PPT.Slides(SLIDE_SALES_FORECAST)
    Call ReadSalesForecast(SalesSlide, SalesForecast)

    Set SalesSlide = Nothing
    Set PPT = Nothing

    FBook.Close
    Set SalesForecast = Nothing
    Set FBook = Nothing
    Set XLApp = Nothing
End Sub

Private Sub ReadSalesForecast(S As Slide, WS As Excel.Worksheet)
    Dim T As Table
    Set T = S.Shapes(TABLE_SALES_FORECAST).Table

    Call WriteWSRangeToTable(T, 2, 4, WS, R_CPMA_COM_SALES)
    Call WriteWSRangeToTable(T, 5, 4, WS, R_CPMA_LARGE_ATC_SALES)
    Call WriteWSRangeToTable(T, 8, 4, WS, R_CPMA_REGULAR_ATC_SALES)
    Call WriteWSRangeToTable(T, 11, 4, WS, R_CPMA_REPORTS_SALES)
    Call WriteWSRangeToTable(T, 14, 4, WS, R_RXR_REPORTS_SALES)
    Call WriteWSRangeToTable(T, 17, 4, WS, R_TOTAL_SALES)

    Set T = Nothing
End Sub

Private Sub WriteWSRangeToTable(T As Table, row As Integer, col As Integer, WS As Excel.Worksheet, Name As String)
    Dim i, j, r, c As Integer
    Dim str As String

    r = WS.Range(Name).Rows.Count
    c = WS.Range(Name).Columns.Count

    For i = 1 To r
        For j = 1 To c
            str = CStr(WS.Range(Name).Cells(i, j))
            str = Format(str, "#,##0")
            T.Cell(row + i - 1, col + j - 1).Shape.TextFrame.TextRange.Text = str
        Next j
    Next i
End Sub

相關內容