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

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

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

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

Q&A

解決済

2回答

252閲覧

パワポのVBA「重なりの抽出」ができない

miiiiiiiisuke

総合スコア13

VBA

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

0グッド

0クリップ

投稿2024/06/05 07:07

実現したいこと

二つの重なった図形があり(一つは写真、一つは図形)、図形の大きさに写真を切り抜き、フォルダ内の写真を順番に入れ替えて、切り取った結果を保管していく、ということが実現したいです。
写真は定点観測されたもので、必要なところだけを保管し直したいので、写真だけ連続で変わっていく、ということをしています。

発生している問題・分からないこと

「画像を2つとも選択」までは成功しており、「重なりの抽出」の最後の行で「型が一致しない」と出て止まります。ChatGPT先生に聞いても解決しません。

' 画像を2つとも選択 pptShapeNew.Select imageFrameCopy.Select msoFalse ' 重なりを抽出 Dim shpRange As Object Set shpRange = ActiveWindow.Selection.ShapeRange shpRange.MergeShapes msoMergeIntersect

エラーメッセージ

error

1実行時エラー '13': 2型が一致しません。

該当のソースコード

shpRange.MergeShapes msoMergeIntersect

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

パワポのVBAなので、ネット検索でもほとんどヒットせず、ChatGPT先生も代替案をくれませんでした。

補足

どなたがお詳しい方、なにとぞどうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

ShapeRangeはプロパティで値の取得のみ可能です。
以下の様にしてみて下さい。

VBA

1 ActiveWindow.Selection.ShapeRange.MergeShapes msoMergeIntersect

若しくは

VBA

1 With ActiveWindow.Selection.ShapeRange 2 .MergeShapes msoMergeIntersect 3 End With

投稿2024/06/05 13:56

編集2024/06/06 02:00
sazi

総合スコア25256

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

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

miiiiiiiisuke

2024/06/05 23:42

回答ありがとうございます。試したところ解決しました! ベストアンサーに選ばせていただきました。 とても助かりました。本当にありがとうございました。
sazi

2024/06/06 01:59

ShapeRangeの処理を複数行うなら、withを使うと良いかと思います。
guest

0

二つの重なった図形があり(一つは写真、一つは図形)、図形の大きさに写真を切り抜き

vba

1Sub MergePictureAndOval() 2 3 Dim sldTarget As PowerPoint.Slide 4 5 'アクティブなスライドを参照 6 Set sldTarget = ActiveWindow.Selection.SlideRange(1) 7 8 Dim strPictureFilePath As String 9 10 '図の絶対パスの指定 11 strPictureFilePath = "C:\FolderName\FileName.jpg" 12 13 Dim shpPicture As PowerPoint.Shape 14 Dim shpOval As PowerPoint.Shape 15 16 '図の挿入 17 Set shpPicture = sldTarget.Shapes.AddPicture2(FileName:=strPictureFilePath, _ 18 LinkToFile:=msoFalse, _ 19 SaveWithDocument:=msoTrue, _ 20 Left:=0, _ 21 Top:=0, _ 22 compress:=msoPictureCompressDocDefault) 23 '楕円の挿入 24 Set shpOval = sldTarget.Shapes.AddShape(Type:=msoShapeOval, _ 25 Left:=0, _ 26 Top:=0, _ 27 Width:=shpPicture.Height, _ 28 Height:=shpPicture.Height) 29 30 Dim shprngMerge As PowerPoint.ShapeRange 31 32 '図形範囲の参照 33 Set shprngMerge = sldTarget.Shapes.Range(Array(shpPicture.Name, shpOval.Name)) 34 35 '図形範囲の操作 36 With shprngMerge 37 '横位置をスライドの左右中央に寄せる 38 .Align msoAlignCenters, msoTrue 39 '縦位置をスライドの上下中央に寄せる 40 .Align msoAlignMiddles, msoTrue 41 '図をプライマリ選択範囲として重なり抽出 42 .MergeShapes MergeCmd:=msoMergeIntersect, _ 43 PrimaryShape:=shpPicture 44 End With 45 46 Set shpPicture = Nothing 47 Set shpOval = Nothing 48 Set shprngMerge = Nothing 49 50End Sub

投稿2024/06/06 01:09

sk.exe

総合スコア884

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.42%

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

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

質問する

関連した質問