1

現在、Excel グラフの 50 以上のグループをパワーポイント プレゼンテーションに転送するプロジェクトに取り組んでいます。比較している 50 以上の項目があり、50 以上の同一のチャートを作成しています。私の Excel ワークブックで設定した方法は、グラフが常に同じグラフ (つまり、グラフ 2) であるということですが、一意の ID 番号を変更することによって、私のグラフはワークシートの別の領域から取得されます。

通常は、チャートを画像としてコピーして貼り付けるだけです。

ただし、私の場合、10% 未満のすべてのデータ ラベルも削除する必要があります。Powerpoint で <10% のデータラベルを削除するコードを見つけましたが、Excel ではありません。このコードを実行するには、オブジェクトを「チャート」形式にしておく必要があります。残念ながら、異なるデータをソースとする同じチャートになるようにチャートを設定したため、一意の ID 番号を変更して新しいチャートをコピーすると、以前のチャートは既に Powerpoint に「更新」され、次のように見えます。情報は最新のアイテムから取得されます。

現在の私のオプションは、1) 各アイテムを一度に 1 つずつコピーして貼り付け、Powerpoint でデータ ラベル コードを実行してから、そのスライドのすべてを画像に変換することです。これは面倒です。2) Excel 内でデータ ラベルを編集する方法を理解し、画像としてコピー アンド ペーストする 3) 最も理想的な方法: リンクされていないチャートを Excel から PPT にコピー アンド ペーストする。これにより、Powerpoint <10% 書式設定コードを実行できますが、リンクを解除すると、現在のチャートを台無しにすることなく Excel シートを変更することもできます。

リンクされていないチャートを Excel から画像ではない PPT にコピー アンド ペーストする方法を知っている人はいますか?

4

2 に答える 2

2

考えられる解決策は次のとおりです。

Sub Breaking_links()

Dim CHR As Shape

Set CHR = ActivePresentation.Slides(1).Shapes(3) 'for 3rd chart shape on 1st slide

CHR.Chart.ChartData.BreakLink

End Sub

簡単な説明 - チャートを PP にコピーした後、上記の例を示すデータ ソースへのリンクを解除する必要があります。

さらに、PP で行うのと同じくらい簡単に Excel で軸を変更できると思います。そのオプションの方が良いと思われる場合は、Excel のヒントを提供するのに役立つ PP のコードを提示してください。

于 2013-04-02T14:30:26.710 に答える
0

Excel チャートを PowerPoint に非表示オブジェクトとして貼り付けたいが、埋め込み OLEObject として維持したい場合は、OLEObject として貼り付けることをお勧めします。貼り付けは次のようになります。

'Create a new slide in the Presentation, set the layout to blank, and paste chart on to the newly added slide.
Set PPTSlide = PPTPres.Slides.Add(SldIndex, ppLayoutBlank)
               PPTSlide.Shapes.PasteSpecial DataType:=ppPasteOLEObject, Link:=msoFalse

ワークブック全体で複数のグラフを、リンクなしで OLEObject として PowerPoint プレゼンテーションに貼り付ける簡単なコードを次に示します。

Sub ExportChartsToPowerPoint_MultipleWorksheets()

    ' OVERVIEW:
    ' This script will loop through all the worksheets in the Active Workbook
    ' and copy all the Charts to a new PowerPoint presentation that we create.
    ' Each chart will get their own individual slide and will be placed in the center of it.

    'Declare PowerPoint Variables
    Dim PPTApp As PowerPoint.Application
    Dim PPTPres As PowerPoint.Presentation
    Dim PPTSlide As PowerPoint.Slide
    Dim PPTShape As PowerPoint.Shape
    Dim SldIndex As Integer

    'Declare Excel Variables
    Dim Chrt As ChartObject
    Dim WrkSht As Worksheet

    'Create new PowerPoint Application & make it visible.
    Set PPTApp = New PowerPoint.Application
        PPTApp.Visible = True

    'Create new presentation in the PowerPoint application.
    Set PPTPres = PPTApp.Presentations.Add

    'Create an index handler for slide creation.
    SldIndex = 1

    'Loop throught all the Worksheets in the Worksheets Collection.
    For Each WrkSht In Worksheets

        'Loop through all the CHARTOBJECTS in the ACTIVESHEET.
        For Each Chrt In WrkSht.ChartObjects

            'Copy the Chart
            Chrt.Chart.ChartArea.Copy

            'Create a new slide in the Presentation, set the layout to blank, and paste chart on to the newly added slide.
            Set PPTSlide = PPTPres.Slides.Add(SldIndex, ppLayoutBlank)
                PPTSlide.Shapes.PasteSpecial DataType:=ppPasteOLEObject, Link:=msoFalse

            'Increment index so that way we paste the next chart on the new slide that is added.
            SldIndex = SldIndex + 1

        Next Chrt

    Next WrkSht

End Sub

さて、これは実際に私の YouTube ビデオの 1 つにあるコードです。このコード全体を確認したい場合は、以下のリンクにアクセスすることをお勧めします。

https://youtu.be/DOaBtYMCCEM

完全な開示 これは私の個人的な YouTube チャンネルです。

于 2018-12-14T18:38:28.930 に答える