Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2016)
IEを開いて全画面表示し、スクリーンショットを取ってIEを閉じたい
投稿日時: 19/10/11 00:15:12
投稿者: 春田

すみません、初心者なので頓珍漢な発言をしてしまうかもしれません・・・
教えていただけると嬉しいです。
 
やりたいこと:指定したURLを開き全画面表示し、スクリーンショットを取ったのち、IEを閉じる。
 
試したこと:下記に記載している内容で、一瞬だけ指定のURLを開いて閉じることはできたのですが、
      追加工程として、IEを全画面表示にしたのち、
      それをスクリーンショットで撮る手順を挿し込めないでしょうか。
      こちらのサイトで「キャプチャを撮る」という工程のサンプルや
      「IEの最大化」のサンプルは見つけたのですが、
      それをどこにどう入れたら正常に動くのかがわからず、躓いています。
      下記の「IEを開いて閉じる」工程を調べるだけで息を上げそうなくらい初心者なので、
      その他にも、必要な工程の見逃しや不要な部分など、気になる点がありましたら、
      ご指摘いただけましたら嬉しいです。
      どうぞよろしくおねがいいたします。
 
----------------------------------
Sub IE_Quit()
 
Dim objIE As InternetExplorer
 
  Set objIE = CreateObject("InternetExplorer.Application")
  objIE.Visible = True
 objIE.navigate "https://www.moug.net/"
  While objIE.Busy Or objIE.readyState <> READYSTATE_COMPLETE
    DoEvents
   Wend
  objIE.Quit
  Set objIE = Nothing
 
End Sub
-----------------------------------
 
         

回答
投稿日時: 19/10/11 10:29:57
投稿者: simple

引用:
こちらのサイトで「キャプチャを撮る」という工程のサンプルや
「IEの最大化」のサンプルは見つけたのですが、
それを示してもらえますか?

投稿日時: 19/10/11 10:55:26
投稿者: 春田

simple様
 
コメントくださり、ありがとうございます。
 
キャプチャを撮るについて、こちらのサンプルがありました。
-----------------------------------------------------------------------------
[color=blue]Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, _
                     ByVal bScan As Byte, _
                     ByVal dwFlags As Long, _
                     ByVal dwExtraInfo As Long)
 
Const VK_SNAPSHOT = &H2C ''[PrintScrn]キー
 
Const KEYEVENTF_EXTENDEDKEY = &H1 ''キーを押す
Const KEYEVENTF_KEYUP = &H2 ''キーを放す
 
Sub Sample1()
  ''[PrintScrn]キーを押す
  keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
  ''[PrintScrn]キーを放す
  keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End Sub
-----------------------------------------------------------------------------
 
 
 
画面最大化についてのサンプルがこちらです。  
-----------------------------------------------------------------------------
Sub sample()
 
  Dim objIE As InternetExplorer
  Call ieView(objIE, "https://www.moug.net/")
 objIE.Fullscreen = True
 
End Sub
-----------------------------------------------------------------------------
 
私が調べた内容は、自分のやりたいことと合っていますでしょか。
少しずつでも理解していきたいので、よりシンプルなコードで作成可能でしたら、
ご教示いただけましたら幸いです。[/code]

回答
投稿日時: 19/10/11 11:30:20
投稿者: simple

一例です。
 

Option Explicit
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, _
                                          ByVal bScan As Byte, _
                                          ByVal dwFlags As Long, _
                                          ByVal dwExtraInfo As Long)
 
Const VK_SNAPSHOT = &H2C ''[PrintScrn]キー
 
Const KEYEVENTF_EXTENDEDKEY = &H1 ''キーを押す
Const KEYEVENTF_KEYUP = &H2 ''キーを放す

Sub IE_Quit()
    Dim objIE As InternetExplorer

    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True
    objIE.Fullscreen = True

    objIE.navigate "https://www.moug.net/faq/viewtopic.php?t=78691"
    While objIE.Busy Or objIE.readyState <> READYSTATE_COMPLETE
        DoEvents
    Wend
    Sleep 1000    '1秒待つ

    ''[PrintScrn]キーを押す
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
    objIE.Quit
    Set objIE = Nothing
End Sub

投稿日時: 19/10/11 23:21:26
投稿者: 春田

simple様
ご回答いただき、ありがとうございます。
...すごいです。希望通りの動作に感動しています!
大変読みやすくしてくださり、ありがたいです。
教えていただいた内容を、
しっかり紐解きながら理解して行こうと思います。
今回教えていただいたものを、
より発展させたいと考えているので(スクリーンショットを名前を付けて保存等)、
また引き続き、機会がありましたら、どうぞよろしくお願いいたします。