Используйте VBA, чтобы открыть URL-адрес в браузере по умолчанию, чтобы поймать существующий сеанс

Я пытаюсь открыть определенный 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)?

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
2
0
6 369
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

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

Большое спасибо за этот творческий ответ - как ни странно, я только что изучил подход Selenium VBA. Но для моего конкретного случая это было бы излишеством, так как мне просто нужно открыть определенный URL-адрес и не хочу создавать зависимости, если это не критично.

Andy 09.04.2019 15:58
Ответ принят как подходящий

Неуклюжий и опрометчивый обходной путь, но вы мог обходите 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"""

Вечером проверю ваше решение. Спасибо также за замечание, связанное с гиперссылкой. Для моей текущей цели это должно работать, так как я сопоставил Sub/Macro с кнопкой. Еще один вопрос: знаете ли вы, работает ли это также для Excel на Mac? (У меня его нет, и я не могу его протестировать, но хочу оставаться максимально совместимым).

Andy 09.04.2019 16:00

@Энди, я считаю, что вам нужно изменить "explorer ""https://www.example.com/function/edit/2019-04-09""" на "open ""https://www.example.com/function/edit/2019-04-09""" для Mac

Chronocidal 09.04.2019 16:14

Большое спасибо! Это сработало отлично и очень быстро (я не тестировал версию для Mac, но, судя по тому, что я нашел в сети, тоже должен) именно так, как я и планировал. Иногда решение может быть таким простым, КОГДА ты его наконец узнаешь...

Andy 09.04.2019 21:08

Другие вопросы по теме