Excel 2010 워크시트의 일부에서 가져온 PPT(PowerPoint 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에서 데이터를 편집하는 것입니다. 그래서 Excel에서 PPT로 데이터를 전송하기 위해 작은 VBA 코드를 작성했는데 제게는 완벽하게 작동했습니다.
코드는 다음과 같습니다.
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