[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『IEの画面コピーの取得方法』(ぬるぬる)
多数のURLをInternetExplorerで順番に開いて、画面内の特定領域の画面コピーを取得してセルに貼っていきたいのですが、見つかった方法ではAlt+PrintScreenを送信して取得する方法なためウィンドウ全体になってしまいます。
IEの描画エリアの左上を0,0として座標を指定して画像データを取得する方法は無いでしょうか。
また、目的のページがポップアップウィンドウが出るため、アクティブウィンドウですと不安定になりがちです。ie.hwndを基準に取得出来ないものかと考えています。
VBAでやる方法はあるのでしょうか?
以下、実際に稼働しているマクロ全文になります。
Option Explicit
Public Declare Function SetForegroundWindow _
Lib "user32" ( _ ByVal hwnd As Long) _ As Long
Public Declare Sub keybd_event Lib "user32" ( _
ByVal bVk As Byte, _ ByVal bScan As Byte, _ ByVal dwFlags As Long, _ ByVal dwExtraInfo As Long _ )
Sub TestCaptureMain()
Application.Wait [Now() + "00:00:01"]
If IE実行("http://google.co.jp") Then Application.Wait [Now() + "00:00:03"]
Call CaptureActiveWindow Application.Wait [Now() + "00:00:01"]
Cells(2, 2).Select ActiveSheet.paste End If
If IE実行("http://yahoo.co.jp") Then Application.Wait [Now() + "00:00:03"]
Call CaptureActiveWindow Application.Wait [Now() + "00:00:01"]
Cells(10, 2).Select ActiveSheet.paste End If
End Sub
Function IE実行(URL As String) As Boolean
On Error Resume Next
Static ie As Object If TypeName(ie) = "Nothing" Or TypeName(ie) = "Object" Then Set ie = CreateObject("InternetExplorer.Application") 'typename = IWebBrowser2 End If
Call SetForegroundWindow(ie.hwnd)
With ie .Navigate (URL) .Visible = True End With Do While ie.Busy = True Or ie.readyState <> 4 DoEvents Loop
IE実行 = True Exit Function
ERR_Execute:
IE実行 = False End Function
Public Sub CaptureActiveWindow()
Cells(1, 1).Copy Application.CutCopyMode = False keybd_event &HA4, 0&, &H1, 0& keybd_event vbKeySnapshot, 0&, &H1, 0& keybd_event vbKeySnapshot, 0&, &H1 Or &H2, 0& keybd_event &HA4, 0&, &H1 Or &H2, 0& End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
いろいろ検索キーワードを変えて調べていたら参考になりそうなコードを発見しました。
http://www.ryokurian.jp/atelier/ieshot/
これを改造して作れないか試してみます。
(ぬるぬる) 2018/06/19(火) 18:28
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.