2019年11月13日水曜日

【VBA】Power Point 埋め込み Excel グラフの目盛ラベルと軸の間の距離を調整する

用あってスライドを作成しているのだが、グラフの埋め込みで困った。
Excelで作ったグラフを埋め込む際、目盛ラベルと軸の間の距離を調整する方法が見つからない。
Excelで作成した散布図は目盛ラベルと軸の距離が調整できないから不便だということを聞いていおり、確かにそうかもしれないと思った。

しかし調べてみると、Excelのグラフについて、VBAを使えば目盛ラベルと軸の間の距離を調整できることが分かった[1]。
そこで、[2]のコードを参考に、目盛ラベルと軸の間の距離を調整するVBAコードを作った。

注意事項


シートのバックアップを取ったうえで、VBAコードを実行させてほしい。
誤った操作をした場合、UNDOは効かない。
VBAは便利なツールだが、数時間の成果が水泡に帰す危険と常に隣り合わせだ。
参考にする際は、自己責任で。

実行環境

Excel (Office 365)
Power Point (Office 365)

コード


Module1.bas

Sub axisOffset()
    Dim oShape As Shape
    Dim oSlide As Slide
    
    ' Target slide is set
    Set oSlide = ActivePresentation.Slides(19)
    
    ' Search shapes which has graph objects
    For Each oShape In oSlide.Shapes
        If oShape.HasChart Then
            With oShape.Chart
                ' Modify offset of labels for axis
                ' X axis
                .Axes(xlCategory).TickLabels.Offset = 0
                ' Y axis
                .Axes(xlValue).TickLabels.Offset = 0
            End With
        End If
    Next oShape
End Sub
コードの使い方について説明する。

  1. パワーポイントで、ターゲットのグラフがあるページを開く
  2. Alt+F11でVBAエディタを開く
  3. 標準モジュールModule1を追加する
    1. プロジェクトウィンドウで右クリックし、ポップアップメニューから「挿入」「標準モジュール」をクリックする
  4. 上記のコードをエディタに張り付ける
  5. スライド番号の指定
    Set oSlide = ActivePresentation.Slides(19)
    このサンプルではスライド19のグラフを調節している。
    ターゲットのグラフのあるページ番号に書き換える。
    たとえば、5枚目のスライドにあるグラフを調整する場合は以下のように書き換える。
    Set oSlide = ActivePresentation.Slides(5)
  6. 目盛ラベルと軸の間の距離の指定
    ' Modify offset of labels for axis
    ' X axis
    .Axes(xlCategory).TickLabels.Offset = 0
    ' Y axis
    .Axes(xlValue).TickLabels.Offset = 0
    このサンプルでは距離を最小にしている。
    距離は0から1000までの数で指定する。
  7. F5キーを押して実行する


参考文献


  1. Format axis => Labels => distance from axis & interval between labels options missing from excel
  2. Add axes to chart in powerpoint using vba?
  3. Slides オブジェクト

0 件のコメント:

コメントを投稿

コメント表示は承認制に設定しています