三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

Power Point の スライドショーのイベント と ページ管理?

http://q.hatena.ne.jp/1281617188 の 質問 回答下書き。

Power Point (できれば2003) のスライドショー実行中に、
スライド画面に配置した「次のページに行く」ボタンを押す以外の操作では先のページに進まないようにする

には、
どのようにVBAで制御すればいいですか?
たとえばクリックや右矢印ボタンでは先のページに進まないようにしたいのです。よろしくお願いいたします

質問を勝手に2つに分割してみます。
1.クリックや右矢印ボタンでは先のページに進まないようにしたい

2.スライド画面に配置した「次のページに行く」ボタンを押すにコードを書く


1.クリックや右矢印ボタンでは先のページに進まないようにしたい

前、同じような質問

http://q.hatena.ne.jp/1278176601
[Powerpoint マクロ]
パワーポイントで、スライドショーを実行している間、特定の(例えば表示順が偶数番目の)スライドを表示したときに、外部の実行ファイルを動かしたいのですが、そのコードまたは、方法を記載しているWebページがあったら、教えていただけますでしょうか。Powerpointのバージョンは2002、WindowsXP上で動かします。

でコメントで答えたとき( http://q.hatena.ne.jp/1278176601#c181582 )

[PPT2000 アプリケーション レベルのイベント ハンドラーを作成します。
http://support.microsoft.com/kb/234184/ja

を参考にして、
Public WithEvents appevent As Application
なんて感じで、イベントを取得。
コイツを使ってみます。

こんな感じで、クラスモジュールを書く


'下記は標準モジュールに(上記のClass1 の名前で作成したイベントを使う・結びつける)

Option Explicit

Dim myobject As New Class1  'イベント処理を記載したクラス(クラスモジュールに処理を記載)
Public nPage As Integer   'ページを動かしたくないので、現在ページを自分で管理

Sub スライドショーの開始()
    'イベントが取りたいので、Applicationとクラスモジュールの結びつけ
    Set myobject.appevent = Application
    
    ActivePresentation.SlideShowSettings.Run 'スライドショーの開始
End Sub
'クラスモジュールに書く Class1 の名前で作成
Option Explicit

' PPT2000 アプリケーション レベルのイベント ハンドラーを作成します。
' http://support.microsoft.com/kb/234184/ja を 参考にして WithEventsのテスト
Public WithEvents appevent As Application

Private Sub appevent_SlideShowBegin(ByVal Wn As SlideShowWindow)
'スライドショー開始時のイベント?
'ここで、いろいろと初期設定を行う?

    Debug.Print "_SlideShowBegin"
    nPage = 1  '初期化、1ページにする
End Sub

Private Sub appevent_SlideShowEnd(ByVal Pres As Presentation)
    MsgBox "end"
End Sub

Private Sub appevent_SlideShowNextClick(ByVal Wn As SlideShowWindow, ByVal nEffect As Effect)
    'MsgBox "SlideShowNextClick page=" & Wn.View.CurrentShowPosition
    Debug.Print "_SlideShowNextClick " & Wn.View.CurrentShowPosition 'ページ数
    
    'スライドショーのページを動かしたくないので、グローバル変数と比べる
    If nPage <> Wn.View.CurrentShowPosition Then 'ページが増えたり減ったりしたら
        Wn.View.GotoSlide nPage   '強制的に自分が管理しているページに戻す
    End If

End Sub

Private Sub appevent_SlideShowOnNext(ByVal Wn As SlideShowWindow)
    Debug.Print "_SlideShowOnNext " & Wn.View.CurrentShowPosition 'テストでページ数
End Sub

ポイントは・・

クラスモジュールに WithEvents を作り、イベント処理を書きます。
(イベントに対して、処理がかけます)

グローバル変数で nPage を作り、ページ数を自分で管理します。

スライドショーのページが変化したときのイベント
_SlideShowNextClick
内で、
現在ページと自分で管理したページを比べて、

'スライドショーのページを動かしたくないので、グローバル変数と比べる
If nPage <> Wn.View.CurrentShowPosition Then 'ページが増えたり減ったりしたら
Wn.View.GotoSlide nPage '強制的に自分が管理しているページに戻す
End If

なんて感じで、強引に元のページに戻してみました。
※少し、画面がちらついてしまいますが・・・

動作・テスト動画 : http://www.youtube.com/watch?v=MzmQ_UntHjQ
www.youtube.com

2.スライド画面に配置した「次のページに行く」ボタンを押すにコードを書く

スライド画面に配置した「次のページに行く」ボタンを押す

を実現したかったので、
テキストボックスや図形を押したら、マクロを起動するようにしてみます。

テキストボックスには設定できなくて、
挿入 ―― 図形 ―― 動作設定ボタン で ボタンを配置してから、
ボタンを選択後・右クリックでマクロを結びつけます。

ボタンが押されたら、

Sub pagenext()

    nPage = nPage + 1
    ActivePresentation.SlideShowWindow.View.Next

End Sub

が起動されます。
中身は、管理しているページを+1して(nPage = nPage + 1)
単純に、ActivePresentation.SlideShowWindow.View.Next で 次ページを表示します。

表示されると、
Private Sub appevent_SlideShowNextClick
が走りますが、
If nPage <> Wn.View.CurrentShowPosition Then
を比べても同じなので、そのまま通過します。

動作・テスト動画 : http://www.youtube.com/watch?v=flY21okTKO8
www.youtube.com

終わりのあいさつ

少し、イヤ、かなり小細工 入ってますがこんな感じで、
クリックや右矢印 の 移動を殺して、設置したボタン(動作設定ボタン)で移動してみました。

PowerPoint2007ですが、2003に応用できるといいなぁ・・と思いつつ、失礼します。


ここから下、本文と関係ない広告

本家よりも検索順位が上がるとなんかイヤなので、関係ない広告を置いて、順位をわざと下げる。

種類別の人気
【いい肉屋】8月福袋☆真夏の焼肉(バーベキュー)セット[どっさり1Kg入 8月15日...[続きを見る]

江戸風漢字文字盤 腕時計★男女ペア★ゴールド → 8月15日...[続きを見る]

ガミラシークレット ローズマリー 115g → 8月15日...[続きを見る]

DUCT イタリアンレザー ラウンドファスナー バイブルサイズ システム 8月15日...[続きを見る]

信楽焼 泡マグ (少量のビールを注いで数分待つと泡が不思議な形に! ) 8月15日...[続きを見る]

SIERRA DESIGNS(シェラデザインズ) ゾロ2 2人用 SD5 8月15日...[続きを見る]

Band-in-a-Box 18 Windows MegaPAK → 8月15日...[続きを見る]

【エコポイント対象商品】 TOSHIBA REGZA 32V型 地上・B 8月15日...[続きを見る]

TOCA SFDMX-12AS → 8月15日...[続きを見る]

コンビ メチャカルファーストEY-360(キャメルブラウン)+ダッコシー 8月15日...[続きを見る]

スティーブ・ジョブズ 驚異のプレゼン―人々を惹きつける18の法則 - 現在人気の スティーブ・ジョブズ 驚異のプレゼン―人々を惹きつける18の法則 など 本・書籍を紹介する(...[続きを見る]

超売れ筋 イタリア製 5mm スリムタイプ 本革 カチューシャ K204 8月15日...[続きを見る]

KOTOKO/Loop-the-Loop 〈初回限定盤〉 TVアニメ「も 8月15日...[続きを見る]

うたの☆プリンスさまっ♪ -Sweet Serenade-(通常版)(2 8月15日...[続きを見る]

生地 S45C Q平行ピン(B種 4X10 【7個入】 → 8月15日...[続きを見る]

刀語 第八巻 / 微刀・釵 【完全生産限定版】 8月15日...[続きを見る]

静音計画 ロードノイズ低減プレート 2667 → 8月15日...[続きを見る]

シルバー925 キュービックジルコニア&ミニパールのハイビスカス ペンダ 8月15日...[続きを見る]

ワンピース DX王下七武海フィギュアvol.1 ONE PIECE バン 8月15日...[続きを見る]

2010年人気

01月13日 ELECOM USBテンキーボード 薄型コンパクトデザイン パンタグラフ ホワイト TK-TCP006WH - エレクトロニクス 〜...[続きを見る]

02月14日 スウォッチ(swatch) 腕時計 Swatch Colour Code Collection 2010 BLACK SUIT GB247 ユニセックス [正規輸入品] - レディースWatch 〜...[続きを見る]

03月15日 所さんの世田谷ベース IV [DVD] - DVDBOX 〜...[続きを見る]

04月14日 FILCO 直角ケーブル3号 3ピンミッキータイプ・カマ型 携帯便利ノートPCACアダプター用ケーブ... ブラック FCC60-03 - エレクトロニクス 〜...[続きを見る]

05月15日 CYBER コードフリークtypeIII(DS用) - GAME 〜...[続きを見る]

ミノウラ GYRO V270-2(ジャイロ) トレーニングマシン (リモコン付) : 06月07日頃にチェックされた商品...[続きを見る]

上京はしたけれど。 : 07月26日頃にチェックされた商品...[続きを見る]

モータウン:グルグルレザーメンテナンスクリーニングオイル - 8/15...[続きを見る]

11日 スペシャルサプライセット 「魔法少女リリカルなのはA's」 - おもちゃ ほか...[続きを見る]

14日 EPSON インパクトプリンター VP-F2000 USBインターフェイス搭載 24ピン 106桁 水平型 7枚複写(オリジナル+6枚) 英数330字/秒 漢字146字/秒 - エレクトロニクス ほか...[続きを見る]

ドロンジョ の関連商品 を探す...[続きを見る]

フランキンセンス の関連商品 を探す...[続きを見る]

2010年8月15日...[続きを見る]

08月15日 リボルテックヤマグチ No.95 石田三成 - おもちゃ ほか...[続きを見る]

2010年8月15日...[続きを見る]

これくらいやっとけば、検索順位も下がるかなぁ
※逆に、上がったら怖いけど・・・まぁ、そんなことは無いので余計な心配はしない。

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)