Jakiś sposób stylizować połączoną tabelę Excel w PowerPoint?


0

Mam połączoną tabelę w moim PPT (PowerPoint 2010), który pochodzi z części arkusza Excel 2010. Gdy aktualizuję dane w programie Excel, tabela aktualizuje się automatycznie w PPT, co działa dobrze i zgodnie z oczekiwaniami.

Problem polega na tym, jak stylizować tę połączoną tabelę za pomocą wbudowanych stylów PowerPoint 2010. Kiedy wstawiasz zwykłą tabelę PowerPoint, masz dwie zakładki na wstążce w obszarze Narzędzia tabel: Projektowanie i układ. W zakładce Projekt w sekcji Style tabeli możesz szybko stylizować tabelę za pomocą zestawu wbudowanych stylów tabel.

Jednak gdy mam połączoną tabelę z Excela, nie mam tych opcji: kiedy wybieram tabelę, tylko jedna karta pojawia się w obszarze Narzędzia tabel na wstążce, czyli Format. Nie mogę używać żadnego z wbudowanych stylów tabel w programie PowerPoint. To sprawia, że ​​połączona tabela jest niespójna pod względem stylu, w porównaniu do innych zwykłych tabel PowerPoint.

Odpowiedzi:


1

Niestety, wbudowane style są dostępne tylko dla tabel stylów utworzonych w PowerPoint, a nie połączonych lub wklejonych.

Kludge, który może, ale nie musi, dać akceptowalne wyniki dla ciebie, to utworzyć pustą tabelę PowerPoint w wybranym stylu, a następnie nałożyć połączoną tabelę Excel. Trochę regulacji w przód iw tył między Excelem i PowerPointem może zapewnić rozsądne wyrównanie, dopasowanie czcionek itp. Grafika pokazuje wyniki bardzo szybkiej makiety, którą zrobiłem.

wprowadź opis zdjęcia tutaj


1

Zasadniczo w połączonej treści jest to, że PowerPoint nie ma pojęcia, co to jest; ma zdjęcie zawartości (przekazane mu przez aplikację, która utworzyła treść ... w tym przypadku Excela) oraz link do pliku zawierającego rzeczywiste dane. Wszystko, co możesz zrobić, jeśli chcesz edytować zawartość, to aktywować ją w oryginalnej aplikacji.

Najlepszym rozwiązaniem może być sformatowanie tabeli na początku w programie Excel.

Jeśli próbujesz dopasować określony styl PPT, utwórz tabelę w PPT, skopiuj / wklej ją do programu Excel. Najpierw musisz wypełnić wszystkie komórki tekstem, w przeciwnym razie program Excel zastosuje domyślne formatowanie tekstu do pustych komórek. Dostosuj odpowiednio szerokość kolumn, dodaj swoje prawdziwe dane i zapisz plik. Następnie link z niego z powrotem do PPT.


0

Dziękuję za odpowiedzi. Ale wydaje mi się, że najlepszym rozwiązaniem jest nadal stylizować tabelę w PPT i edytować dane w Excelu. Napisałem więc mały fragment kodu VBA do przesyłania danych z Excela do PPT i działa to dla mnie idealnie.

Oto kod:

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.