1

私は PowerPoint でマクロを作成しました。このマクロは、そのプロセスの一部として、元の Excel グラフをコピーし、コピーしたグラフを OLE オブジェクトとして貼り付けることによって、PowerPoint プレゼンテーションのリンクされたグラフを埋め込みグラフに変換します。 「sldComponent.Shapes.PasteSpecial(ppPasteOLEObject)」です。

今日まで、これは 2003 年から 2010 年までのすべてのバージョンで正常に機能していました。ただし、2013/365 でこの関数を実行しようとすると、「指定されたデータ型は使用できません」という実行時エラーが発生し続けます (-2147188160 / 80048240)。また、Microsoft Developers Reference の Web ページで、"ppPasteOLEObject" が PasteSpecial メソッド (Shapes コレクションと共に使用する場合) で使用できるデータ型としてリストされていないことにも気付きました。

プログラムでグラフを画像として貼り付ける方法をいくつか見つけましたが、貼り付けたグラフをクリックしてデータにアクセスしようとすると、「リンクされたファイルは利用できません」というメッセージが表示され続けます。PowerPoint ユーザーが元の Excel ファイルを参照せずにデータを編集できるように、データを完全に自己完結型にしたいと考えています。興味深いことに、バグのある行で PowerPoint マクロを停止し、リボンの [貼り付け] を手動でクリックすると、コピーされたグラフ貼り付けられ、アクセス可能なデータが完全に埋め込まれ、アクティブなスライドに貼り付けられます。したがって、グラフはクリップボードにコピーされます。 ; 何らかの理由で、PowerPoint マクロが読み込んで貼り付けることができません。さらに興味深いことに (読み: 苛立たしいことに)、PasteSpecial(ppPasteOLEObject) コマンドはテーブルに対して機能します。Excel からコピーされたもの、つまりセル範囲ですが、チャート用ではありません。

どうしたの?PowerPoint 2013 で VBA コードを使用して、新しいバージョンの Excel グラフを埋め込む (つまり、すべてのデータを含む、以前に作成した自己完結型の Excel グラフをプレゼンテーション スライドに挿入する) 方法を教えてください。

追加: Excel でソース ワークシートからグラフを取得するために使用されるコマンドは、"xlCopySheet.ChartObjects(1).Select"、次に "appExcel.Selection.Copy" であることにも注意してください。選択した Copy 構文が、データを含むグラフ全体ではなく、表示のみをキャプチャしていることに問題がありますか? ここで使用する正しいコピー構文は何ですか?

追加 2: 詳細仕様: アプリ自体は 2013/Office 365 バージョンですが、元のマクロは保存され、Excel と PowerPoint の両方で互換性 (97-2003) モードで実行されていました。

4

1 に答える 1

2

グラフを「Microsoft Office グラフィック オブジェクト」として貼り付けると、グラフは Excel グラフとして貼り付けられます。PowerPoint に表示される Excel リボンの [グラフ ツール] タブを使用して、PowerPoint 内で書式を設定できます。データの編集/選択ボタンのいずれかをクリックすると、Excel でデータが開きます。

グラフを Microsoft Excel グラフ オブジェクトとして貼り付けると、埋め込まれたブック (グラフとそのデータだけでなくブック全体) として貼り付けられ、新しいグラフ シートが埋め込まれたブックに挿入されます。見えます。グラフをフォーマットまたは編集するには、ダブルクリックする必要があります。これにより、埋め込まれたワークブックが Excel で開かれ、埋め込まれたオブジェクトのサイズが台無しになる可能性があります (したがって、ワークシートに埋め込まれたグラフのサイズではなく、グラフ シートのサイズになります)。フォントサイズなど。

Excel でグラフをコピーし、これを PowerPoint VB イミディエイト ウィンドウで使用すると、

activepresentation.Slides(3).Shapes.PasteSpecial ppPasteOLEObject 

私は 2 番目の動作を取得します。

これを使用してチャートをコピーしてみてください:

xlCopySheet.ChartObjects(1).Chart.Copy
于 2015-05-22T15:57:18.187 に答える