PowerPoint (一般・VBA)

PowerPoint 一般・VBAに関する話題を扱うフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10全般 : PowerPoint 2016)
Powerpointに貼った画像のサイズを変更したい
投稿日時: 20/07/22 06:38:43
投稿者: gorby

 
 
Powerpointに貼った画像のサイズを変更したくて、下記のマクロを書いて実行したら、
 
4行目の
With ppApp.Slides(1).Shapes(1)
で修飾子エラーになります。
 
どこをどう直せばよいでしょうか?
 
ーーー<start of code>ーーー
Sub グラフサイズ調整()
 
Dim ppApp As Long
 
For Each Slide In ActivePresentation.Slides
 
 
With ppApp.Slides(1).Shapes(1)
.Top = 1 / 0.03527778
.Left = 1 / 0.03527778
.LockAspectRatio = True
.Width = 5 / 0.03527778
End With
 
Each
 
Set ppApp = Nothing
 
End Sub
ーー<end of code>ーーー

回答
投稿日時: 20/08/20 13:54:49
投稿者: QooApp

Dim ppApp As Long
がそもそも違うと思います。
 
ppAppとはつまりパワーポイントアプリケーションという変数じゃないかと考えます。
たしかにアプリケーションの直下、アクティブプレゼンテーションの中にはスライド.シェイプがあります。
なのでまず型を変えます。
 
次に、せっかく宣言しているppAppを全く使用していません(現状)
最後にsetでnothingにしていますが、そもそも何も設定されていない状態ですので常時nothingみたいなもんです。
 
setしましょう。アクティブなプレゼンテーションをまずsetしてあげることで、あなたが今画面に表示しているプレゼンテーションを変数にセッティングしました。操作をするための前準備がこれでできました。
 

Option Explicit

Sub グラフサイズ調整()
 
[color=red]Dim ppApp As Presentation
Set ppApp = ActivePresentation[/color]

With ppApp.Slides(1).Shapes(1)
.Top = 1 / 0.03527778
.Left = 1 / 0.03527778
.LockAspectRatio = True
.Width = 5 / 0.03527778
End With
 
Set ppApp = Nothing
 
End Sub

 
とりあえずこれで動くことを確認してください。
For Eachの部分ですが、Eachが2回設定されてて2個めいらないかと。
 
Eachの書式は次の通りです。つまりNextが記載されるべきかと。
 
For Each element In group
  [statements]
  [Exit For]
  [statements]
Next [element]

 
ただ、なにをどう繰り返したいのかわからなかったのでループ文は外しています。

回答
投稿日時: 20/08/20 13:56:30
投稿者: QooApp

QooApp さんの引用:

Dim ppApp As Presentation
Set ppApp = ActivePresentation


 
できると思って書いたらだめだったw
color=red、/colorこれは無視してください

トピックに返信