Настройка фокуса на веб-страницу в стиле IE PDF для очистки с помощью Excel VBA

#html #css #excel #vba #internet-explorer

#HTML #css #excel #vba #internet-explorer

Вопрос:

Я просматриваю этот защищенный паролем веб-сайт и добираюсь до точки, где он открывает то, что выглядит как дочернее окно, но имеет URL, подобный "http://yadayadayada**.pdf**?V42" .

Хотя это PDF, я могу вручную щелкнуть по нему, чтобы выбрать и скопировать данные.

Моя проблема заключается в настройке фокуса на нее с помощью кода.

Я пробовал несколько вариантов перебора URL-адресов открытых страниц, но он не идентифицируется, и я не могу установить фокус на этот.

Если все остальное не удается, я могу сохранить его как PDF, открыть его через Adobe и очистить его оттуда.

Ответ №1:

Я не уверен, что я действительно понимаю, чего вы хотите. Следующий код проверяет каждое открытое приложение, является ли оно Internet Explorer, и если да, имеет ли оно правильный URL-адрес в качестве местоположения. Больше информации в комментариях.

Важно: нет необходимости активировать вкладку для очистки данных из нее. Я также не знаю, как вывести вкладку на передний план в IE. Почему-то никто не знает 😉

 Sub ScrapeFromTabs()

Dim allShell As Object
Dim oneWindow As Object

  Set allShell = CreateObject("Shell.Application")
  
  'Go through all open windows
  'Each tab in IE is treated as a window by the OS.
  For Each oneWindow In allShell.Windows
    'Check if it is a window of the Internet Explorer
    If InStr(1, UCase(oneWindow.FullName), "IEXPLORE") > 0 Then
      'Check whether the relevant parts are present in the URL
      If InStr(1, oneWindow.locationURL, "yadayadayada") > 0 And InStr(1, oneWindow.locationURL, ".pdf") > 0 Then
        'Do here what you want with the pdf
        'Whatever is possible with a pdf ... somthing like this
        'set nodeHeadline = oneWindow.getElementsByTagName("h1")(0)
        
        'It was the right tab with the pdf
        'Leave the loop
        Exit For
      End If
    End If
  Next oneWindow
End Sub
 

Комментарии:

1. Ну, предоставленный вами код все еще не смог сделать то, что я хотел, со страницей, которая была просто скопирована / вставлена. Копирование / вставка всегда по умолчанию выполняется на исходной вкладке, а не на вновь открытой. Однако он определил URL нужной мне страницы, чтобы я мог сохранить / повторно открыть / скопировать / вставить и получить то, что мне нужно. Опубликована общая строка кода (Dim objShell, IE_count, x, my_url, дочерняя страница), которую я пробовал, но не дал мне URL. У вас есть. Очень странно, как это работает, потому что я могу вручную щелкнуть страницу и выполнить копирование / вставку. В любом случае, я, безусловно, могу использовать это, так что, спасибо.

2. Еще раз просмотрел ваш ответ, Zwenn, и да, мне не нужно было активировать страницу, чтобы удалить с нее данные. С моей исходной вкладки я открываю 2-ю вкладку, которая является страницей pdf, и похоже, что она находится в фокусе, но Ctrl-a или IE.execWB 17,0 выбирает все из исходной вкладки, а не ту, которая только что открылась. Очень странно