Как включить выполнение JavaScript в макросе на VBA?

How can JavaScript be enabled to run this app?
  • 29 января 2024 г. 7:58
Ответы на вопрос 2
Исполнение JavaScript напрямую в VBA не поддерживается, так как VBA (Visual Basic for Applications) — это язык программирования, предназначенный специально для создания макросов в приложениях Microsoft Office, и он не имеет встроенных средств для работы с JavaScript.

Однако вы можете взаимодействовать с JavaScript в приложениях, которые имеют такую возможность, например, Internet Explorer (хотя он больше не поддерживается Microsoft и заменён на Microsoft Edge) или другие приложения, которые предоставляют объектную модель для управления через VBA. Пример взаимодействия с браузером Internet Explorer:

```vba
Sub RunJavaScript()

    ' Создаем новый экземпляр Internet Explorer
    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")

    With ie
        .Visible = True ' делаем браузер видимым
        .Navigate "http://ваш_сайт.com" ' переходим на интересующий сайт

        ' Ждем, пока страница не будет полностью загружена
        While .Busy Or .readyState <> 4
            DoEvents
        Wend

        ' Выполнение JavaScript-кода на странице
        .document.parentWindow.execScript "javascript:alert('Привет, это VBA!');", "JavaScript"
    End With
    
    ' Освобождаем ресурсы
    Set ie = Nothing

End Sub
```

Если вы работаете в среде, где Internet Explorer недоступен, вы можете искать другие способы интеграции VBA и JavaScript. Например, можно использовать контрол WebBrowser в формах VBA или разрабатывать пользовательские дополнения для браузеров с поддержкой VBA.

Важно помнить, что использование устаревших компонентов, таких как Internet Explorer, может привести к проблемам с безопасностью и совместимостью. Рекомендуется рассмотреть современные альтернативные подходы, когда это возможно.
Если говорить универсально, то для этого требуется не конкретно javascript а полноценный браузер. 

Посмотри, нет ли там компонента WebBrowser (я давно не лез в эти адовые дебри ископаемых технологий майкрософта), он использует штатный internet explorer сейчас это 11 версия, и он будет ругаться что переходите на edge (придется удалить эту компоненту-уведомление в панели управления в свойства браузера и это не просто, она будет возвращаться сама).

Но нужно понимать что если владелец сайта поставит проверку на IE да и банально использует несовместимые фичи современных браузеров, что вероятнее, то работать как ожидается не будет.

Но сам браузер можно использовать как запускалку javascript, формируя страницу самостоятельно (сформировав ссылку через data uri например) либо использовать функционал добавления скрипта.

p.s. excell и vba самый худший способ решать твою задачу.
Сейчас такие задачи решают с помощью selenium и современных языков программирования
Похожие вопросы