Переключить прокси-сервер Internet Explorer из Excel VBA - PullRequest
2 голосов
/ 26 марта 2019

Я могу переключить интернет-прокси в Internet Explorer, перейдя на Internet options> Connections> LAN settings> Proxy Server> Use a proxy server for your LAN.

Когда я это сделаючто он переключает ключ реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable.

Проблема заключается не только в том, что когда я изменяю значение вручную с помощью regedit, он не переключает ни прокси, ни параметр прокси в IE.

Я пытаюсь переключить его из Excel с кодом VBA.

Private Sub DisableProxy()

  Dim Shell As New WshShell

  Shell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", 0, "REG_DWORD"

End Sub

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

Как правильно переключить прокси из Excel VBA?

1 Ответ

3 голосов
/ 26 марта 2019

С помощью этого ответа я обнаружил, что должен сказать, что параметры конфигурации IE изменились, но кода не было в VBA, поэтому я посмотрел его и нашел этот сайт .

Так что после изменения кода все заработало.

' Reference:
' Windows Script Host Object Model

Private Declare Function InternetSetOptionA Lib "wininet.dll" (ByVal hInternet As Long, ByVal lOption As Long, ByVal sBuffer As String, ByVal lBufferLength As Long) As Integer

Private Sub ToggleProxy(ByVal Toggle As Integer)

  Dim Shell As WshShell
  Const INTERNET_OPTION_SETTINGS_CHANGED As Long = 39

  If (Toggle <> 0 And Toggle <> 1) Then Exit Sub
  Set Shell = New WshShell
  Shell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", Toggle, "REG_DWORD"
  InternetSetOptionA 0, INTERNET_OPTION_SETTINGS_CHANGED, 0, 0

End Sub

Private Sub Main()

  ToggleProxy Toggle:=0 ' Disable
  ToggleProxy Toggle:=1 ' Enable

End Sub
...