我的 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