質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

2260閲覧

PowerPoint VBAにおいて、GUIで選択しているグラフ内の単一のデータラベルの表示書式を取得 / 設定

taungyeon0103

総合スコア6

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/03/01 07:51

編集2020/03/01 12:03

前提・実現したいこと

PowerPoint VBAにおいてグラフ内の単一のデータラベルを選択した際、そのデータラベルの表示書式(NumberFormatLocal)を取得し、他のグラフの単一データラベルに適応したいです。

わからないこと

PowerPoint VBAのActiveWindow.Selectionオブジェクトから、グラフ内のいずれが選択されているかの情報は得ることができますか?

試したみた考察↓↓

  1. ActiveWindow.Selection.ShapeRangeに格納されるShapeオブジェクトが、Chartを保持するShape(≒データラベルの親要素)となってしまっている気がする・・・
  2. グラフ内のデータラベルを選択している場合、GUIとしてはグラフ自体も選択状態になっているため、考察1の結果になっても仕方ない気がするが、データラベルを選択しているという情報を保持していない気がする・・・
Dim selectedObj As Selection: Set selectedObj = ActiveWindow.Selection Dim spRange As ShapeRange: Set spRange = selectedObj.ShapeRange

上記とりあえずコーディングのち、デバッグでいろいろなプロパティ見ていますが、実現ができず・・・
宜しくお願い致します。

補足情報(FW/ツールのバージョンなど)

Windows 10
PowerPoint 2019

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PowerPoint VBAでグラフの値を変更する
PowerPoint VBAでShapeコレクションについてFor Eachループを回す方法
参考に
いろいろ設定できそうですが多過ぎるので一部ですが設定できますね。

VBA

1Sub Sample() 2'アクティブなグラフを表すChartの取得() 3 On Error GoTo ErrHndl 4 Dim cht As Chart 5 Set cht = ActiveWindow.Selection.ShapeRange(1).Chart 6 7 Debug.Print cht.ChartTitle.Caption 8 Debug.Print cht.Legend.Name 9 Debug.Print cht.Legend.Font.Name 10 Debug.Print cht.Legend.Font.Bold 11 Debug.Print cht.Legend.Font.Italic 12 Debug.Print cht.ChartData.Workbook.WorkSheets(1).Range("B1").Value 13 14'スライド内のグラフを取得する() 15 Dim Sld As Slide 16 Dim Shp As Shape 17 For Each Sld In ActivePresentation.Slides 18 Debug.Print Sld.Name & "===========" 19 For Each Shp In Sld.Shapes 20 If Shp.HasChart Then 21 'Shp.Select 22 Set cht = Shp.Chart 23 Debug.Print cht.ChartTitle.Caption 24 Debug.Print cht.Legend.Name 25 Debug.Print cht.Legend.Font.Name 26 End If 27 28 Next Shp 29 Next Sld 30Exit Sub 31 32ErrHndl: 33 MsgBox "グラフを選択してから実行してください。" 34End Sub

【PowerPoint VBA】 グラフ内のデータラベルのインデックスを取得するコード
こちらは、細かい設定のようですが...ためしていません

投稿2020/03/02 02:58

sinzou

総合スコア392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taungyeon0103

2020/03/02 14:08

ありがとうございます。後半のリンク先のものがとても参考になりした。 UIAutomationClientを利用し、Seriesのindexと、DataLabelのindexを獲得して特定するというアイデアを得ることができました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問