Используйте VBA, чтобы открыть URL-адрес в Default-Browser для перехвата существующего сеанса - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь открыть определенный URL-адрес веб-приложения, в которое я уже вошел (или сообщаю мне, чтобы войти, если я не) в браузере по умолчанию (Chrome). Когда я копирую / вставляю этот URL в адресную строку браузера, он отлично работает. Когда я открываю этот URL с помощью VBA с помощью ThisWorkbook.FollowHyperlink, он не перенаправляется - как своего рода запасной вариант - на домашнюю страницу, а не на конкретный URL.

Я обнаружил, что это проблема сеанса, и VBA каким-то образом не распознает / не перехватывает существующий сеанс.

Как «уродливый обходной путь», я в настоящее время перенаправляю более http://www.dereferer.org/ на конкретный URL, что прекрасно работает, но требует дополнительного времени.

Это не работает:

ThisWorkbook.FollowHyperlink ("https://www.example.com/function/edit/2019-04-09)

Это работает:

ThisWorkbook.FollowHyperlink ("http://www.dereferer.org/?https://www.example.com/function/edit/2019-04-09)

(для моих нужд не требуется кодировать целевой URL)

Поскольку это перенаправление медленное и косвенное, я ищу способ прямого открытия целевого URL при использовании существующего сеанса (если это возможно). Если это невозможно (например, из-за безопасности), каков наилучший / быстрый способ перенаправления без настройки собственного перенаправителя (который перенаправляет как dereferer.org через параметр GET)?

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

Неуклюжий и опрометчивый обходной путь, но вы могли бы обойти FollowHyperlink и вместо этого использовать Shell, чтобы открыть сайт в новой вкладке / окне вашего браузера по умолчанию:

Shell "explorer ""https://www.example.com/function/edit/2019-04-09"""

(Как примечание, если вы введете гиперссылку в ячейку и нажмете на нее вручную, а не используете VBA FollowHyperlink, то такая же проблема все равно будет возникать. Это также происходит в Word и PowerPointПросто будьте благодарны, что вы не пытаетесь поймать событие FollowHyperlink и «исправить» это в окне)

В ответ на комментарии - для Mac вам нужно будет использовать "open" вместо "explorer".Этот код должен работать на Mac или ПК:

Shell IIf(Left(Application.Operatingsystem, 3)="Win","explorer ","open ") & _
    """https://www.example.com/function/edit/2019-04-09"""
1 голос
/ 09 апреля 2019

Если вам разрешено устанавливать Selen Basic, я бы использовал это

Option Explicit

'download selenium https://github.com/florentbr/SeleniumBasic/releases/tag/v2.0.9.0
'Ensure latest applicable driver e.g. ChromeDriver.exe in Selenium folder
'VBE > Tools > References > Add reference to selenium type library
Public Sub DownloadFile()
    Dim d As WebDriver
    Set d = New ChromeDriver
    Const URL = "url"

    With d
        .Start "Chrome"
        .get URL
        'login steps
        .get 'otherUrl'
        Stop '<delete me later
        .Quit
    End With
End Sub
...