パワーポイントVBAに貼付けた複数のグラフサイズを統一したいと思っています。
1~20枚目のスライドに、それぞれ2つのグラフが貼付けてあります。
全てのグラフサイズ・位置を統一したいと思い、以下の様なVBAを書いてみました。
----------
Sub 表サイズの統一()
Dim myTop1, myLft1, myHgt1, myWdt1, cnt, i, myTop2, myLft2, myHgt2, myWdt2
With ActivePresentation.Slides(1).Shapes(1)
myTop1 = .Top
myLft1 = .Left
myHgt1 = .Height
myWdt1 = .Width
End With
With ActivePresentation.Slides(1).Shapes(2)
myTop2 = .Top
myLft2 = .Left
myHgt2 = .Height
myWdt2 = .Width
End With
cnt = ActivePresentation.Slides.Count
For i = 2 To cnt
With ActivePresentation.Slides(i).Shapes(1)
.Top = myTop1
.Left = myLft1
.Height = myHgt1
.Width = myWdt1
End With
Next
For i = 2 To cnt
With ActivePresentation.Slides(i).Shapes(2)
.Top = myTop2
.Left = myLft2
.Height = myHgt2
.Width = myWdt2
End With
Next
End Sub
----------
各スライドにある1つ目のグラフのサイズは統一出来たのですが、2枚目のグラフは何の変化もおきません。
どこが悪いのか、どなたかご教示頂ければ幸いです。
どうぞよろしくお願い致します。
失礼ながら、2003で試行してみましたが、
ご提示のコードできちんと動きます。
なので
> どこが悪いのか
具体的な指摘は出来かねるのですが・・
For i = 2 To cnt
With ActivePresentation.Slides(i)
.Select
With .Shapes(2)
.Select
.Top = myTop1
として、ステップインで実行してみると原因が掴めるかもしれません。
余計なお世話かもしれませんが、
Sub 表サイズの統一()
Dim myTop1, myLft1, myHgt1, myWdt1, cnt, i, myTop2, myLft2, myHgt2, myWdt2
With ActivePresentation.Slides(1)
With .Shapes(1)
myTop1 = .Top
myLft1 = .Left
myHgt1 = .Height
myWdt1 = .Width
End With
With .Shapes(2)
myTop2 = .Top
myLft2 = .Left
myHgt2 = .Height
myWdt2 = .Width
End With
End With
cnt = ActivePresentation.Slides.Count
For i = 2 To cnt
With ActivePresentation.Slides(i)
With .Shapes(1)
.Top = myTop1
.Left = myLft1
.Height = myHgt1
.Width = myWdt1
End With
With .Shapes(2)
.Top = myTop2
.Left = myLft2
.Height = myHgt2
.Width = myWdt2
End With
End With
Next
End Sub
こんな感じでまとめるとスッキリしますね。
質問者
お礼
早速ご回答頂き有り難うございました!
お礼が遅くなり失礼しました汗
再度トライしてみましたが、何故かVBAは働いてくれませんでした。
もしかすると2007を使っているからかもしれませんが、不思議です。
デバッグしてみると、以下の様になりました。
----------
For i = 2 To cnt
With ActivePresentation.Slides(i)
With .Shapes(1)
.Top = myTop1
.Left = myLft1
.Height = myHgt1
.Width = myWdt1
End With
With .Shapes(2)←←←←←←←←←←エラー箇所
.Top = myTop2
.Left = myLft2
.Height = myHgt2
.Width = myWdt2
エラーメッセージ:
Shapes(不明なメンバー):範囲外の整数2は次の有効な範囲にありません:1から1へ
----------
いずれにせよご回答頂き有り難うございました!
綺麗なコードもご紹介頂き、大変勉強になります。
お手数をおかけしました。
お礼
早速ご回答頂き有り難うございました! お礼が遅くなり失礼しました汗 再度トライしてみましたが、何故かVBAは働いてくれませんでした。 もしかすると2007を使っているからかもしれませんが、不思議です。 デバッグしてみると、以下の様になりました。 ---------- For i = 2 To cnt With ActivePresentation.Slides(i) With .Shapes(1) .Top = myTop1 .Left = myLft1 .Height = myHgt1 .Width = myWdt1 End With With .Shapes(2)←←←←←←←←←←エラー箇所 .Top = myTop2 .Left = myLft2 .Height = myHgt2 .Width = myWdt2 エラーメッセージ: Shapes(不明なメンバー):範囲外の整数2は次の有効な範囲にありません:1から1へ ---------- いずれにせよご回答頂き有り難うございました! 綺麗なコードもご紹介頂き、大変勉強になります。 お手数をおかけしました。