PowerPointのスライドにExcelから貼り付けたグラフ
※リンク切れでデータが編集できない>
の表示順を変えたくて、
マクロで Series.PlotOrder = 1を使用したテスト動画
youtu.be
https://youtu.be/aSQeb7JyBs4
です。
※リンク切れグラフの処理で参考となれば幸いです。
キッカケは、調べ物のついでに、寄り道。
下記、知恵袋の質問
detail.chiebukuro.yahoo.co.jp
>パワーポイントの積み上げ横棒についての質問です。
>グラフの項目を自由に並べ替える方法を教えて下さい。
>グラフの元データExcelがないので、パワポ内で完結させたいです。
>
>例
>リンゴ60%・バナナ30%・ブドウ10% の順で
>表示されている積み上げ横棒グラフを
>ブドウ10%・リンゴ60%・バナナ30% で表示させたい
でした。
いきなりテストする
と
その前に、
まず、リンクが切れていることを確認するぞ。
確認後、下記のソースコードを貼り付ける。
実行する。
'現在選択ページの Sub シリーズの名前がブドウならプロット順を1にする() Dim n As Integer Dim nPAGE As Integer nPAGE = ActiveWindow.Selection.SlideRange.SlideIndex '現在選択しているページ Dim objSlide As PowerPoint.Slide 'スライド Set objSlide = ActivePresentation.Slides(nPAGE) '↑現在のページを変数に Dim objShape As PowerPoint.Shape 'シェイプ 'テストで選択ページの.Shapesを探る Debug.Print "Id", "Name" For Each objShape In objSlide.Shapes 'スライド内のシェイプ達を一つ一つあさる Debug.Print objShape.Id, objShape.Name objShape.Select 'わかりやすいように該当オブジェクトを選択 If objShape.HasChart = True Then Debug.Print "チャートみつけたぞ", objShape.Chart.Name Dim ppChart As PowerPoint.Chart Set ppChart = objShape.Chart Debug.Print ".SeriesCollection.Count=", ppChart.SeriesCollection.Count For n = 1 To ppChart.SeriesCollection.Count Dim ppSeries As PowerPoint.Series '系列を処理する Set ppSeries = objShape.Chart.SeriesCollection(n) 'n番目の系列を代入 Debug.Print "名前 .Name", ppSeries.Name '目的のシリーズのプロット順を変える If ppSeries.Name = "ブドウ" Then '↑で表示される名前も確認してね ppSeries.PlotOrder = 1 '見つけたら1番目なので、テスト的には簡単? Exit For 'ループを抜ける SeriesCollection(n)の順番も変わっているしね? End If '↑ふたつ、入れ替えたかったら?どうすんだ? Next End If Next MsgBox "終了" End Sub
せっかく、ブログを覗きに来ていただいたのに、
時間を無駄にさせてしまったかなぁ・・・と思いつつ。
(※動画の後半、連続実行で、なぜか?エラーになってしまったし、
やはり元データ無しだと、無理だった・・期待を持たせてできなかったパターンが怖いのですが、
空気を読まないで)
解決の糸口となれば幸いです。
#PowerPointVBA #マクロ #パワーポイント #MS365 #グラフ #系列表示順変更