PowerPoint (一般・VBA)

PowerPoint 一般・VBAに関する話題を扱うフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : その他)
WEB画面のスクショがVBAで取れません
投稿日時: 23/02/19 20:42:38
投稿者: がんばりやさん

WEBの画面をスクリーンショットして
新しいスライドに貼り付けようとしたらうまくいきません。
マクロはエクセルと同じだろうと思って
実行ボタンを押すと5行目のWaitに青く印がついて
Application.Wait Now + TimeSerial(0, 0, 5)
コンパイルエラー
メソッドが見つかりません  と出ます。
5行目を実行しないようにして進めていくと
VBAプログラムを書いているページが貼り付けされました。
 
すみませんが、指定したWEBアドレスのスクリーンショットを
取ってくる方法を教えて戴けませんでしょうか。
パワーポイントは2002か2007です。
それと
最後は、WEB画面でなくて パワーポイントの画面になってくれたらなあと思います。
 
下のはエクセルで動いたものをパワーポイントに持ってきたものです。
どうぞよろしくお願い致します。
 
Private Declare PtrSafe Sub keybd_event Lib "user32" ( _
    ByVal bVk As Byte, _
    ByVal bScan As Byte, _
    ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long _
        )
 
 
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
                       (ByVal hwnd As Long, ByVal lpOperation As String, _
                        ByVal lpFile As String, ByVal lpParameters As String, _
                        ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub スクショ()
 
    Dim URL As String, rc
    URL = "https://www.moug.net/"
    rc = ShellExecute(0, "Open", URL, "", "", 1)
 
'Application.Wait Now + TimeSerial(0, 0, 5)
     
    keybd_event &H2C, 0, 0, 0& 'Print screen押す
    keybd_event &H2C, 0, 2, 0& 'Print screen上げる
 
 
  With ActivePresentation
      .Slides(1).Shapes.Paste
  End With
 
End Sub

回答
投稿日時: 23/02/20 10:35:57
投稿者: Suzu

Application とは、PowerPoint の VBA であれば PowerPoint、
         Excel の VBA であれば Excel を指します。
 
ExcelのVBAを持ってきたのですから、Excelの Application を指します。
 
その Execel.Application に Waitメソッドがありますが、
PowerPoint.Application には Waitメソッドは無いのでエラーとなっています。
 
 
そこで行っているのは、次のコードを実行するのに、5秒待っています。
ですので、Waitの代わりに、5秒待てば良いです。
 
「Sleep関数」を使えば良いでしょう。詳しくは WEBで検索しましょう。
 
 
--------------------------------------------------------------------
そもそもになりますが、このコードは、
 
1.WEBを開く
2.スクリーンショット
3.貼り付け
 
これを、PowerPointのVBAで実行しなければならない理由は何でしょう?
 
コードを拝見する限りは、URLは コード内への埋め込みの様ですから
1実行で、1URL の スクリーンショットの貼り付け。
 
であれば、実行できないコードより、手動での方が早いです。
 
 
数多くのWEB画像をスライドに貼り付けを行うのであれば
先にその画像を準備しておき、画像として挿入すれば良い。
 
そうなら、
 Excelで
  セルに URLを準備しておき
  WEBを開き、
  画像として保存する
  これをセルに対し繰り返し連続で実行
までをで実行するようにした方が効率的と思います。
 
それとも、PowerPoint VBA の勉強なんでしょうかね。

投稿日時: 23/02/20 15:01:22
投稿者: がんばりやさん

回答をくださった Suzu 様
大変ありがたい回答をありがとうございました。
 
こんな方法に気が付きませんでした。
下の10行の内容はありがたいです。
この方法でやらさせていただきます。
 
お忙しい中をありがとうございました。