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

У меня есть длинный список номеров продуктов нашей компании, и позже в коде эти номера должны быть преобразованы в HTML, а затем связаны с соответствующей страницей продукта. Ссылки на страницы имеют многочисленные перенаправления 301, чтобы перейти от чего-то грязного / старого / опечатки / и т. д. к новым URL-адресам, оптимизированным для SEO.

Например, что-то вроде этого:

сайт.com/12345

Будет перенаправлен на эту страницу:

site.com/имя-продукта-12345

У меня нет списка для сравнения названий продуктов, так как они создаются и уничтожаются ежедневно, а сайт создает URL-адрес на лету (а не из какой-то базы данных или чего-то еще).

По многим сложным причинам у меня есть доступ только к Excel для выполнения этой задачи (ура!). Я написал (плохой) код, чтобы открыть Internet Explorer, перейти по короткому URL-адресу, а затем скопировать новый адрес во все, что нужно. Это работает, но невероятно медленно (как и следовало ожидать). Мне интересно, есть ли решение, которое не требует ожидания открытия IE, но работает исключительно в VBA?

Я нашел много способов узнать, происходит ли перенаправление, и я нашел много способов получить заголовки, однако мне еще предстоит найти способ получить конечный URL-адрес. В основном они сосредоточены на WinHTTP.WinHTTPRequest.5.1, однако кажется, что нет никакого WinHTTPResponse для вызова (например, HttpResponse в .NET), поддерживаемого Excel.

Любая помощь будет принята с благодарностью, спасибо!

РЕДАКТИРОВАТЬ: на этот вопрос ответили в другом сообщении на форуме Reddit Excel. Ответ, который мне был нужен, был .Option(1) после .Send (если кому-то еще это нужно).

Обсуждение можно прочитать здесь


person user3140155    schedule 27.12.2013    source источник
comment
Если вы получили нужный вам ответ, опубликуйте его и примите.   -  person sigil    schedule 16.01.2014
comment
Извините, когда я впервые создал сообщение, мне не разрешили ответить на мой собственный вопрос / отметить его как правильный ответ, потому что моя учетная запись была слишком новой.   -  person user3140155    schedule 20.01.2014


Ответы (1)


На это был дан ответ в другом сообщении на форуме Reddit Excel. Ответ, который мне был нужен, был .Option(1) после .Send (если кому-то еще это нужно).

person user3140155    schedule 20.01.2014