PPTの VBAは初心者です。(Excelでは少々かじってますが)
PPTのスライドショーで コマンドボタンを押したときに
Shape Objectを少しずつ移動させたいと以下のようなコードを書きました。
With ActivePresentation.Slides(1)
.Shapes("aa").Top = 50
.Shapes("aa").Left = 100
Sleep (1000)
' MsgBox ("---1")
.Shapes("aa").Top = 80
.Shapes("aa").Left = 150
Sleep (1000)
' MsgBox ("---2")
.Shapes("aa").Top = 110
.Shapes("aa").Left = 200
End With
しかし、結果は3秒後に最後の位置にいきなり移動してしまいます。
コメントアウトしている MsgBox を実行すると(そこで停止しますが)
途中の位置も表示されます。
どうも途中では再描画されないみたいですので
Application.Visible = msoFalse / msoTrue
などで再描画出来ないかと思ったのですが、
「実行時エラー: Application(不明なメンバー):無効な要求です。アプリケーションウインドウを非表示に設定することは出来ません。」
が返されてしまいます。
Accessには Repaint とか SreenUpdating などが使えそうな記事があるのですが
PowerPointでは難しそうです。
どなたか、再描画の方法または Shapeが見た目に移動するコードを
教えて頂けませんか。
No.2ベストアンサー
- 回答日時:
DoEvents を使うのはいかがでしょう?
.Shapes("aa").Top = 50
.Shapes("aa").Left = 100
' MsgBox ("---1")
Sleep (1000)
DoEvents
何か良い戻り値があれば、、それを拾って次に進むとか、、
あてずっぽうですが、
Dim ShapL As Single
With ActivePresentation.Slides(1)
ShapL = .Shapes("aa").Left
.Shapes("aa").Top = 50
.Shapes("aa").Left = 100
Do
Sleep (1000)
DoEvents
Loop While ShapL = .Shapes("aa").Left
Qchan1962 さん
ありがとうございます。
教えていただいた DoEvents で所望の途中経過が表示されました。
多分 O/Sに処理を一旦渡して戻るときに再描画されるということなんですね。
DoEvents を入れてループを回したら、私の環境で 15msec/1回 の
時間がかかっているようです。
質問に記述したコード例はかなり間延びした動作ですので全く問題ないのですが
欲を言えば、汎用性を持たせるには もう少し処理時間を縮めたい!
No.3
- 回答日時:
DoEventsは他のアプリケーションを操作する時によく使われる手法と理解しています。
本当は、作画が終わった時に返される戻り値があれば良いと思いました。回答したループを抜ける条件が
それに当たるかは、判りません。
>DoEvents を入れてループを回したら、私の環境で 15msec/1回 の時間がかかっているようです。
画像がどの程度の大きさなのか、その作画処理時間がどの位かかるのかにもよると思います。
バックグランドの処理にも影響されそうですし、一定にするのはアプリケーション上の処理なので難しいのではないでしょうか。
かくかくした動きを無くしたいのであれば、Animation系の操作が向いているのかも知れません。
申し訳ないのですが、私自身、PowerPoint VBAを使う事が無いので、powerpointリファレンスを参考にしてみてはいかがでしょう。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
何度もありがとうございます。
今回 実は表示にはそれほどこだわってはいませんでした。
(うまく行けば いずれ、挿入した画像をゆっくりズームさせたり、左右に移動させたり
ということはしたいと思っていましたが)
むしろ私がこだわったのは、図形などの移動、操作処理は Excel(表計算)よりも
PowerPoint(視覚訴求が目的)の方が重視されそうな気がするのに、
何故か操作した結果が表示されない > 反映するにはその度に DoEvents を噛ませないといけない
ということに納得できなかったからです。
私が試した限り、(DoEventsを挿入しなければ)スライドショー中に VBAコードで
Shapeなどを操作しても、画像を貼り付けても、画面に反映されるのは、
そのサブルーチンを抜けるとき、ではプレゼンテーションにプログラムを
記述する意味合いが無くなってしまいそうな気がして、何のための VBA?
と感じたからでした。
確かに Animation系の 操作があるようですが、こっちはかなりハードルが高そうで・・・
いずれにしても、いろいろ教えていただき、ありがとうございました。
勉強になりました。
No.1
- 回答日時:
めぐみんさん
ありがとうございます。
リンク先のコードは Excelのようで PPT で確認したところ
ActivePresentation とか Application Objectで Calculateメソッドを
試しましたが「メソッドまたはデータメンバーが・・・」とエラーになります。
またオブジェクトブラウザで PowerPoint内で Calculate を検索しましたがヒットしませんでした。
Shapeの利用シーンは PPTの方が多いように思うのですが
意外とアニメーションの例が少ないので困っています。(涙;;;)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) QRコード作成マクロについて 3 2022/11/26 16:55
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
このQ&Aを見た人はこんなQ&Aも見ています
-
とっておきの「夜食」教えて下さい
真夜中に小腹がすいたときにこっそり作るメニュー、こっそり家を抜け出して食べに行くお店… 人には言えない、けど自慢したい、そんなあなたの「とっておきの夜食」を教えて下さい。
-
「平成」を感じるもの
「昭和レトロ」に続いて「平成レトロ」なる言葉が流行しています。 皆さんはどのようなモノ・コトに「平成」を感じますか?
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
【VB.NET】 パワポ操作を非表示で
Visual Basic(VBA)
-
ExcelVBAにて既に開かれているPowerpointをアクティブにするには?
Excel(エクセル)
-
【PowerPoint VBAの高速化】
その他(プログラミング・Web制作)
-
-
4
VBAで既存のパワポのファイルを開くには?
Access(アクセス)
-
5
パワーポイントのVBAでテキストボックスに値を変更させたいです
Visual Basic(VBA)
-
6
パワーポイント filedialogでフォルダ名
PowerPoint(パワーポイント)
-
7
ExcelのVBAで、選択したファイルが既に開かれているか確認したい
Excel(エクセル)
-
8
エクセルのVBAで開いているパワーポイントのファイルを印刷
Visual Basic(VBA)
-
9
PPTのコマンドボタンがクリックできません
その他(Microsoft Office)
-
10
パワーポイントVBAでグラフのサイズ・位置を統一
PowerPoint(パワーポイント)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ListBoxで改行したい
-
C#で壁の当たり判定と自キャラ...
-
VC;;6.0のMFCで線を簡単に引け...
-
GDI+で重なった画像をピンポイ...
-
Excel VBA:コントロールボタン...
-
C#を用いて描画する四角形の角...
-
エクセルのレーダーチャート 0...
-
給紙トレイをダイアログを使わ...
-
Word 描画オブジェクトを削除...
-
C# DrawImage 物理サイズでな...
-
図の削除直後の再描画
-
N88BASICでシューティングゲー...
-
C++/CLIを用いて画像をクリップ...
-
VB.netで図形描画ができません^^;
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
実行時エラー 438になった時の...
-
ウォッチ式の文字数制限について
-
パソコンへの「Dropbox...
-
VBA(エクセル)で自動的にボタン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
PowerPoint の VBA
-
給紙トレイをダイアログを使わ...
-
Word 描画オブジェクトを削除...
-
画面に絵を出す方法
-
C#を用いて描画する四角形の角...
-
C#でPictureBox内での図形移動...
-
VB.NETでグラフィックを描くと...
-
ビットマップに描画をしてピク...
-
VB.netで図形描画ができません^^;
-
C# DrawImage 物理サイズでな...
-
Excel VBA:コントロールボタン...
-
MFCでのコンボボックスについて
-
OpenGLでのオブジェクトの描画上限
-
円の頂点の求め方を知りたいです。
-
コンボボックスのテキストを消...
-
VB.NETでphotoshopのレイヤーの...
-
DrawLineで引いた線が消えてし...
-
水平線の描画
おすすめ情報