Eu tenho uma tabela vinculada em meu PPT (PowerPoint 2010), que pertence a uma parte de uma planilha do Excel 2010. Quando atualizo os dados no Excel, a tabela é atualizada automaticamente no PPT, o que funciona bem e conforme o esperado.
Agora, o problema é como estilizar esta tabela vinculada usando os estilos integrados do PowerPoint 2010. Portanto, ao inserir uma tabela normal do PowerPoint, você terá duas guias na faixa de opções em Ferramentas de tabela: Design e Layout. Na guia Design, na seção Estilos de tabela, você pode estilizar rapidamente a tabela usando vários estilos de tabela integrados.
Porém, quando tenho uma tabela vinculada do Excel, não tenho essas opções: quando seleciono a tabela, apenas uma guia aparece em Ferramentas de Tabela na faixa de opções, que é Formatar. E não consigo usar nenhum dos estilos de tabela integrados do PowerPoint. Isso torna a tabela vinculada inconsistente em termos de estilo, em comparação com outras tabelas regulares do PowerPoint.
Responder1
Infelizmente, os estilos integrados estão disponíveis apenas para tabelas de estilo criadas no PowerPoint, em vez de vinculadas ou coladas.
Um truque que pode ou não produzir resultados aceitáveis para você seria criar uma tabela vazia do PowerPoint no estilo de sua escolha e, em seguida, sobrepor uma tabela vinculada do Excel. Um pequeno ajuste entre Excel e PowerPoint pode produzir um alinhamento razoável, correspondência de fonte, etc. O gráfico mostra os resultados de uma maquete muito rápida que fiz.
Responder2
O problema do conteúdo vinculado em geral é que o PowerPoint não tem ideia do que seja; possui uma imagem do conteúdo (entregue pelo aplicativo que produziu o conteúdo ... Excel, neste caso) e um link para o arquivo que contém os dados reais. Tudo o que ele pode fazer por você, se quiser editar o conteúdo, é ativá-lo no aplicativo original.
Sua melhor aposta pode ser formatar a tabela no Excel para começar.
Se você estiver tentando combinar um estilo PPT específico, crie uma tabela em PPT e copie/cole-a no Excel. Você desejará preencher todas as células com texto primeiro, caso contrário, o Excel aplicará sua formatação de texto padrão às células vazias. Ajuste as larguras das colunas conforme necessário, adicione seus dados reais e salve o arquivo. Em seguida, vincule-o de volta ao PPT.
Responder3
Obrigado pelas respostas. Mas me parece que a melhor solução ainda é estilizar a tabela em PPT e editar seus dados no Excel. Então escrevi um pequeno código VBA para transferir dados do Excel para PPT e funcionou perfeitamente para mim.
Aqui está o código:
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