Вопрос или проблема
У меня есть 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.