Как программным путем запустить Chrome или MS Edge из VBA кода?

Вопрос или проблема

У меня есть VBA код для открытия нескольких URL из ячеек столбца в Excel. Вместо использования IE, как изменить браузер на использование Chrome.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim lrow As Long, lcol As Long
Dim linkcell As Range
Dim loopVar As Long
Dim IE As Object
   
Set IE = CreateObject("Internetexplorer.application")
   

lrow = Range("A1").End(xlDown).Row
    
If Not Intersect(Target, Cells(1, 2)) Is Nothing Then
    Cancel = True
  
    For Each linkcell In Range("E2:E" & lrow)

        With IE
            If loopVar = 0 Then
                .navigate linkcell
            Else
                .navigate linkcell, CLng(2048)
            End If
          
            Do While .readyState <> 4
              DoEvents
            Loop
          
            .Left = 0
            .Top = 0
            .Toolbar = 1
            .StatusBar = 1
            .Height = 600
            .Width = 900
            .resizable = True
            .Visible = True
          
        End With
        loopVar = loopVar + 1
      
     Next linkcell
    
     IE.navigate "https://www.costco.com", CLng(2048)
    
    ShowWindow IE.hWnd, SW_SHOWMAXIMIZED
            
    Set IE = Nothing
    
End Sub   

Ниже приведен упрощенный скрипт, который использует Chrome.
Я ничего не тестировал, оставляю тестирование вам.
Я перечисляю некоторые источники, которые могут помочь вам в дальнейшем развитии скрипта.

Скрипт:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim lrow As Long, lcol As Long
Dim linkcell As Range
   
Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
Dim executable As String = Path.Combine(path, "Google\\Chrome\\Application\\chrome.exe")

lrow = Range("A1").End(xlDown).Row
    
If Not Intersect(Target, Cells(1, 2)) Is Nothing Then
    For Each linkcell In Range("E2:E" & lrow)
        Process.Start(executable, linkcell.Value)
     Next linkcell
End Sub

Также здесь перечислены некоторые полезные источники для перемещения окна Chrome
на передний план (хотя это может быть не обязательно):

Ответ или решение

Для программирования автоматического запуска браузеров Chrome или Microsoft Edge из VBA кода в Excel, важно понимать, как взаимодействовать с системными ресурсами и обрабатывать URL-адреса. В приведенной вами задаче указывается необходимость перейти с Internet Explorer на современный браузер, такой как Chrome. Рассмотрим, как это можно сделать.

Использование VBA для запуска браузера Chrome:

VBA не имеет встроенных функций для прямого обращения к Chrome, поэтому используем Shell для выполнения задач в Windows. Чтобы открыть Chrome с заданным URL, необходимо указать путь к Chrome и передать URL в качестве аргумента.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim lrow As Long
    Dim linkcell As Range
    Dim chromePath As String
    Dim url As String

    chromePath = """C:\Program Files (x86)\Google\Chrome\Application\chrome.exe""" ' Убедитесь, что путь корректный

    lrow = Range("A1").End(xlDown).Row

    If Not Intersect(Target, Cells(1, 2)) Is Nothing Then
        Cancel = True
        For Each linkcell In Range("E2:E" & lrow)
            url = linkcell.Value
            Shell (chromePath & " " & url)
        Next linkcell
    End If
End Sub

Использование VBA для запуска браузера Microsoft Edge:

Для Microsoft Edge, который теперь на базе Chromium, вызывается тот же процесс Shell, однако путь к исполняемому файлу будет другим:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim lrow As Long
    Dim linkcell As Range
    Dim edgePath As String
    Dim url As String

    edgePath = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" ' Убедитесь, что путь корректный

    lrow = Range("A1").End(xlDown).Row

    If Not Intersect(Target, Cells(1, 2)) Is Nothing Then
        Cancel = True
        For Each linkcell In Range("E2:E" & lrow)
            url = linkcell.Value
            Shell (edgePath & " " & url)
        Next linkcell
    End If
End Sub

Детали выполнения:

  • Ожидание полной загрузки: VBA автоматически не может дожидаться полной загрузки страницы, как с IE, поэтому необходимо либо учитывать таймаут, либо работать с окнами и событиями API Windows для улучшенного контроля.
  • Проверка путей: Убедитесь, что пути к браузерам корректны. По умолчанию система может не всегда иметь их в стандартных директориях.
  • Обработка ошибок и улучшение: Добавьте обработку исключений для выявления и корректировки проблем с правами или отсутствием браузеров на целевой системе.

Полезные источники:

  • Взаимодействие с окнами: Используйте FindWindow, ShowWindow и другие API-вызовы для управления активными окнами браузера.
  • Документация: Обратитесь к официальной документации Chrome и Edge для получения дополнительных настроек командной строки.

Эти шаги помогут вам безопасно и эффективно интегрировать автоматизацию запуска браузеров через VBA, обеспечивая ваш проект корректными средствами навигации, не зависящими от устаревшего Internet Explorer.

Оцените материал
Добавить комментарий

Капча загружается...