三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

PowerPoint リンク切れグラフの表示順をマクロSeries.PlotOrderで変更するテスト デバッグ

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 #グラフ #系列表示順変更

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)