Как включить выполнение 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 а полноценный браузер. <br/> <br/> Посмотри, нет ли там компонента WebBrowser (я давно не лез в эти адовые дебри ископаемых технологий майкрософта), он использует штатный internet explorer сейчас это 11 версия, и он будет ругаться что переходите на edge (придется удалить эту компоненту-уведомление в панели управления в свойства браузера и это не просто, она будет возвращаться сама). <br/> <br/> Но нужно понимать что если владелец сайта поставит проверку на IE да и банально использует несовместимые фичи современных браузеров, что вероятнее, то работать как ожидается не будет. <br/> <br/> Но сам браузер можно использовать как запускалку javascript, формируя страницу самостоятельно (сформировав ссылку через data uri например) либо использовать функционал добавления скрипта. <br/> <br/> p.s. excell и vba самый худший способ решать твою задачу. <br/> Сейчас такие задачи решают с помощью selenium и современных языков программирования
Похожие вопросы