Excel Web соскабливает поиск элементов в Google и Print Screen to Word

Я пытаюсь найти какое-то значение из excel и вставить кеш-экран в файл слова. Он работает нормально, когда есть только один элемент для поиска.

Но мне интересно, можно ли просмотреть список и вставить их все в текстовый файл.

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private Const VK_SNAPSHOT As Byte = 44
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_SHOWMAXIMIZED = 3
Private Const VK_LCONTROL As Long = &HA2
Private Const VK_V = &H56
Private Const KEYEVENTF_KEYUP = &H2

Sub Sample()
Dim IE As Object
Dim hwnd As Long 
IECaption As String
Dim workRng As Range
Dim searchword As String

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True    
IE.Navigate "www.Google.com"    
Sleep 5000    
IECaption = "Google - Internet Explorer"    
hwnd = FindWindow(vbNullString, IECaption)    
ShowWindow hwnd, SW_SHOWMAXIMIZED
Sleep 1000
DoEvents

Я попытался сделать цикл для кода ниже, но, похоже, он мог искать только A1 A2 или полностью не работал. Даже если ему удалось найти A2, он все равно не может вставить экранный снимок в слово.

Set workRng = Range("A1:A10")
For Each searchword in workRng
IE.Document.All("q") = searchword.Value
IE.Document.All("btnK").Click
Sleep 1000
Call keybd_event(VK_SNAPSHOT, 0, 0, 0)
Set wordobj = CreateObject("Word.Application")
Set objDoc = wordobj.Documents.Add
    wordobj.Visible = True
Set objSelection = wordobj.Selection
    objSelection.Paste
Next searchword
End Sub
0
задан 12 авг. '17 в 22:28
источник поделиться
1 ответ

Не 100% уверены, что это то, о чем вы просите. У меня исправлены парочки для вас, и вы здесь:

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private Const VK_SNAPSHOT As Byte = 44
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_SHOWMAXIMIZED = 3
Private Const VK_LCONTROL As Long = &HA2
Private Const VK_V = &H56
Private Const KEYEVENTF_KEYUP = &H2

Sub Sample()

    Dim IE As Object
    Dim hwnd As Long
    Dim IECaption As String
    Dim workRng As Range
    Dim searchword

    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    IE.navigate "www.Google.com"
    IEWait (1)
    Do Until IE.readyState = READYSTATE_COMPLETE: DoEvents: Loop

    IECaption = "Google - Internet Explorer"
    hwnd = FindWindow(vbNullString, IECaption)
    ShowWindow hwnd, SW_SHOWMAXIMIZED

    IEWait (1)
    Do Until IE.readyState = READYSTATE_COMPLETE: DoEvents: Loop

    DoEvents

    Set workRng = Range("A1:A10")
    For Each searchword In workRng
        IE.document.all("q") = searchword.Value
        IE.document.all("btnK").Click

        IEWait (1)
        Do Until IE.readyState = READYSTATE_COMPLETE: DoEvents: Loop

        Call keybd_event(VK_SNAPSHOT, 0, 0, 0)
        Set wordobj = CreateObject("Word.Application")
        Set objDoc = wordobj.Documents.Add
        wordobj.Visible = True
        Set objSelection = wordobj.Selection
        objSelection.Paste
    Next searchword

    IE.Quit
    Set workRng = Nothing
    Set IE = Nothing

End Sub

Function IEWait(t As Long)

    Do While IE.Busy
        Application.Wait DateAdd("s", t, Now)
    Loop

End Function

Некоторые объяснения здесь:

  1. Вам не хватает Dim syntax для IECaption.
  2. поиск может быть только объектом или вариантом.
  3. Использование Excel для управления IE иногда имеет некоторые странные реакции на sleep, и поэтому я бросаю функцию IEWait которая должна хорошо контролировать веб-страницу до необходимого количества времени.
  4. Выйти и закрыть IE. Вы можете удалить эти строки, если это не нужно делать.

Надеюсь, это может вам помочь.

0
ответ дан 31 авг. '17 в 23:15
источник

Другие вопросы по меткам или Задайте вопрос