2017-01-30 10 views
1

現時点では、私は指示書hereに従ってみようとしていますが、以前にこの問題を抱えていました。何らかの理由で、PowerPointチャートを宣言されたChart変数に割り当てることができません。 .HasChartを使用して、確かにそこにチャートがあり、Shapes(i).Typeを使用してShapeがチャートタイプであることを確認しましたが、ランタイムエラー '13'が発生します:タイプ毎回不一致。私は複数のファイルと複数のグラフの種類でこれを試しましたが、無駄に - 私は明らかで愚かな何かが欠落している必要がありますが、私はそれを把握することはできません。例えばVBAのチャート変数にPowerPointチャートを割り当てることができないのはなぜですか?

Dim plot As Chart 

For Each shp In PPT.Slides(5).Shapes 

    If shp.HasChart Then 

     MsgBox (shp.Type) 
     Set plot = shp.Chart 

    End If 

Next shp 

任意の考え?

答えて

4

PowerPoint.ChartExcel.Chartと同じではありません(下記を参照してください...)。試してみてください:

Dim plot As PowerPoint.Chart 

あなたがDim plot as Chartを行うと、ChartExcelオブジェクトモデルのメンバーであるため、VBAは、特に指定のない限りExcel.Chartを使用するようにデフォルト設定されます。

上記は、PowerPointライブラリへの参照による初期バインディングを前提としています。 「ユーザー定義型が定義されていません」などのコンパイルエラーが発生した場合は、プロジェクト参照をPowerPointに設定していないことを意味します。あるいは、Dim plot as Object(一般的なオブジェクトタイプ)でも可能ですが、そのようにインテリセンスは失われます。

注:機能的PowerPoint.ChartExcel.ChartまたはWord.Chart、本質的に同一である、話す、彼らは同じメソッド、プロパティなど、およびいくつかの例外(私は容易に考えることができません)何もしていますあなたは1つにすることができます、あなたは他の人にすることができます。唯一の問題は、内にある PowerPoint内のチャートを参照する場合、厳密にはExcel.Chartではなく、不一致エラーを回避するためにPowerPoint.Chart(または一般的なObjectタイプ)として修飾する必要があることです。

+0

ありがとうございました!変数を宣言すると、オートフィルによって2つのチャート変数のいずれかを選択するオプションが与えられたので、これは処理されたと思ったが、そうは思わなかった。長い質問に答えてくれてありがとう! – tal

+0

@tal、二つの異なる 'Chart'はExcelとPowerPointです。おそらくExcelのリストが最初に表示されますが、私はそれについて100%は確信していません:) –

+1

私はdrop-ownから両方の選択肢を試しましたが、役に立たないと思います。 。 – tal