読者です 読者をやめる 読者になる 読者になる

Powerpoint VBAを使おう!

Powerpoint VBAやExcelのVBAで遊んでいます。Word VBAも始めました。

コードのブログへの書き方練習

書いたコードをvbaのeditorに戻すと文字化けしてたので,ちょっと練習。

せっかくなので コード実行中のキー操作を受け入れさせる方法とスリープAPIで。

Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwmiliseconds As Long)


Sub test(図形 as Shape)
    Dim TSlide As Slide: Set TSlide = ActivePresentation.Slides(図形.Parent.SlideIndex)
    Dim trgSleep As TextRange: Set trgSleep = TSlide.Shapes("スリープ").TextFrame.TextRange
    Dim flgStop As Boolean: flgStop = False
    Dim slpTime As Long

    Do
        'いろいろ動作させる-----------------

       'いろいろ終わり--------------------
        DoEvents '一度解消&ほかのボタンとかの結果を受け入れれるように。

        If GetAsyncKeyState(16) <> 0 Then Exit Do  'シフトを押したらループを抜けさせる
        If GetAsyncKeyState(vbKeyNumpad4) <> 0 Then slpTime = slpTime + 5 'テンキー4押したらスリープ増やす
        If GetAsyncKeyState(vbKeyNumpad1) <> 0 Then slpTime = slpTime - 5 'テンキー1押したらスリープ減らす
        If slpTime < 0 Then slpTime = 0 '0以下は許可しない
        
        trgSleep = slpTime 'テキストの更新を入れて,オートシェイプの描画や変更を画面にちゃんと反映させる
       
        Sleep slpTime  'スリープで速度調整
        If flgStop = True Then Exit Sub  'ほかのボタンで flgStopをtrueにされたらループを抜ける
   Loop
End Sub


ためし終わり。
上のコードを使ってみる下準備
f:id:chemiphys:20161230110457p:plain
コードを動かすボタンと,スリープという名前の図形(スリープの数値が出力されます)を準備してないと怒られます。
むしろ,パワーポイントはエラーが起きたとき,何も言わずに静かに終わるのが大変(;´▽`A``
visual basic editorから実行してあげたりしないとエラー箇所わからなくて困りますね。。
そういうときは,上のコードじゃ動かないので

Sub test() ' 図形 As Shape)
    Dim TSlide As Slide: Set TSlide = ActivePresentation.Slides(1) '図形.Parent.SlideIndex)

引数を取らないようにマクロを変えて,
[F5]や実行ボタンを使うか,イミディエイトウィンドウから実行してあげてください。
安定するまではだいたい上の状態でやってます。


横幅は狭いのが残念だけど,はみ出てるの面倒だけど・・・
幅が広いテンプレートがありました。
文字化けない!すごい。

はてなブログ初心者丸出しですみません(;´▽`A``

はてな記法で >|vb|    ||< 試させてもらいました。
コレハイイ。