要約:PowerPointのイベント処理について説明しています。具体的には、`WithEvents`を使用してイベントを処理する方法、新しいスライドが挿入された時やプレゼンテーションが保存されたタイミングでのイベント処理、そして選択されたシェイプ内の文字列をクリップボードにコピーする方法についてライブデバッグを通じて解説しています。
#PowerPointVBA #WithEvents #イベント #マクロ #パワーポイント #シェイプの選択 #VBA #PowerPoint
www.youtube.com
https://www.youtube.com/watch?v=QT5r3169fWg
目次
00:00 1.やりたいことを説明
01:40 2.PowerPointのイベント処理 WithEvents設置方法
06:27 Public WithEvents AppTEST As Application
07:46 PresentationNewSlide(ByVal Sld As Slide) 新しいスライドが挿入された時
09:03 標準モジュールでクラスモジュールとアプリをつなげてイベントを実行する
14:57 PresentationSave(ByVal Pres As Presentation) 保存のタイミングをテスト
16:46 2.1 本題:シェイプ選択のタイミングをチェック WindowSelectionChange(ByVal Sel As Selection)
18:51 2.2 他の回答を参考にする おいおい・・・
22:00 2.3 Selection.Type プロパティ で選択された種類をチェックしないとエラーが発生する
32:58 2.4 図形内の文字列を取得したいので HasTextFrame でテキストの存在を判断する
40:56 再度ソースの設置方法 と 簡単な解説
1.やりたいことを説明
知恵袋の質問にチャレンジしてみます。
パワーポイント VBAについて質問です。
図形を選択して、その図形に記入されている内容(文字)をクリップボードにコピーをするようなマクロはどのように作ればよろしいでしょうか?
複数合ってもできますか?
編集画面で、選択されたシェイプ内の文字列をクリップボードにコピー
他の回答が付いているが、
たぶん、イベント処理の記述がわからない?感じなので、
かってに、ライブでデバッグしてみる・・・
2.PowerPointのイベント処理 WithEvents設置方法
01:40 https://www.youtube.com/watch?v=QT5r3169fWg&t=100
昔、スライドショーでやった、イベント処理があるので
ken3memo.hatenablog.com
↑を参考にする
※これを宣伝したかっただけ・・・おいおい。
Public WithEvents AppTEST As Application
06:27 https://www.youtube.com/watch?v=QT5r3169fWg&t=387
クラスモジュールにイベント処理を書く
07:46 PresentationNewSlide(ByVal Sld As Slide) 新しいスライドが挿入された時
Private Sub AppTEST_PresentationNewSlide(ByVal Sld As Slide) MsgBox "PresentationNewSlide" End Sub
標準モジュールでクラスモジュールとアプリをつなげてイベントを実行する
09:03 https://www.youtube.com/watch?v=QT5r3169fWg&t=543
Dim X As New EventSELECT Sub pp編集開始() '↑クラスモジュールとアプリをリンクしてイベント処理 Set X.AppTEST = Application 'イベントを拾えるように代入 '↑クラスモジュール EventSELECT 内で、 'WithEvents AppTEST As Application で定義しているので、開始時に代入 End Sub
PresentationSave(ByVal Pres As Presentation) 保存のタイミングをテスト
14:57 https://www.youtube.com/watch?v=QT5r3169fWg&t=897
Private Sub AppTEST_PresentationSave(ByVal Pres As Presentation) MsgBox "保存のタイミング" End Sub
2.1 本題:シェイプ選択のタイミングをチェック WindowSelectionChange(ByVal Sel As Selection)
16:46 https://www.youtube.com/watch?v=QT5r3169fWg&t=1006
WindowSelectionChangeなど、タイミングをチェックする
(ライブ前にやったので、正解を書いたけど、いろいろなイベントがある)
2.2 他の回答を参考にする おいおい・・・
18:51 https://www.youtube.com/watch?v=QT5r3169fWg&t=1131
同じような処理になると思うので、
他の回答を引用して作成する
※終了予定が、不具合を見つけて焦る三流プログラマー・・・
2.3 Selection.Type プロパティ で選択された種類をチェックしないとエラーが発生する
22:00 https://www.youtube.com/watch?v=QT5r3169fWg&t=1320
https://learn.microsoft.com/ja-jp/office/vba/api/powerpoint.selection.type
ppSelectionNone
ppSelectionShapes
ppSelectionSlides
ppSelectionText
2.4 図形内の文字列を取得したいので HasTextFrame でテキストの存在を判断する
32:58 https://www.youtube.com/watch?v=QT5r3169fWg&t=1978
If shp.HasTextFrame = msoTrue Then 'テキストアリを判断する shp.TextFrame.TextRange.Copy Debug.Print shp.TextFrame.TextRange.Text Else Debug.Print "テキストを持ってません" End If
3.おわりの挨拶
こんな感じで、パワポの編集画面のイベント処理もできるので、
やってみてください。
40:56 コードの設置方法
https://www.youtube.com/watch?v=QT5r3169fWg&t=2456
↑に設置方法載せました、下記↓のソースコードを設置してテストしてみてください。
クラスモジュールに記載 クラスモジュール名をEventSELECTにする
Option Explicit Public WithEvents AppTEST As Application Private Sub AppTEST_WindowSelectionChange(ByVal Sel As Selection) Debug.Print Now(), "TYPE=", Sel.Type Dim shp As Shape If Sel.Type = ppSelectionNone Or Sel.Type = ppSelectionSlides Then 'まずシェイプ以外なら抜ける Exit Sub End If If Not Sel.ShapeRange.Count = 1 Then 'コピーは1つ Exit Sub End If Set shp = Sel.ShapeRange(1) If shp.HasTextFrame = msoTrue Then 'テキストアリを判断する shp.TextFrame.TextRange.Copy Debug.Print shp.TextFrame.TextRange.Text Else Debug.Print "テキストを持ってません" End If End Sub
標準モジュールに記載
Option Explicit Dim X As New EventSELECT Sub pp編集開始() '↑クラスモジュールとアプリをリンクしてイベント処理 Set X.AppTEST = Application 'イベントを拾えるように代入 '↑クラスモジュール EventSELECT 内で、 'WithEvents AppTEST As Application で定義しているので、開始時に代入 End Sub Sub pp編集終了() Set X.AppTEST = Nothing 'イベントとのつながりを切る End Sub
WithEventsの過去記事:
ken3memo.hatenablog.com
ken3memo.hatenablog.com
ken3memo.hatenablog.com
ken3memo.hatenablog.com
1. **要約**:
このビデオでは、PowerPointのイベント処理について説明しています。具体的には、`WithEvents`を使用してイベントを処理する方法、新しいスライドが挿入された時やプレゼンテーションが保存されたタイミングでのイベント処理、そして選択されたシェイプ内の文字列をクリップボードにコピーする方法についてライブデバッグを通じて解説しています。
2. **キーワード**:
PowerPoint, イベント処理, WithEvents, クラスモジュール, テキストコピー, ライブデバッグ, ソースコード, `WindowSelectionChange`, `HasTextFrame`, `Selection.Type`
3. **YouTubeタイトル案**:
- PowerPointでのイベント処理完全ガイド
- ライブデバッグで学ぶPowerPointイベント処理
- PowerPointのシェイプ選択イベントをマスターする
4. **似ている単語のペア**:
- PowerPointとパワポ
- イベント処理とイベントハンドリング
- クラスモジュールとクラスモジュール
- テキストコピーとテキスト複製
- ライブデバッグとリアルタイムデバッグ
- ソースコードとソースコード
- `WindowSelectionChange`とウィンドウ選択変更
- `HasTextFrame`とテキストフレーム有無
- `Selection.Type`と選択タイプ
イラストプロンプト:
漫画イラストで描いてください 赤い髪の男女がプログラムコードを見て悩んでいます
※オレンジ・赤?のパワーポイントのカラーを表現してみた・・・