Clever-Excel-Forum

Normale Version: VBA: aktiven Browser (WinStandard) auslesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,
ich würde gerne über VBA das Windows Standard Programm in Bezug auf den Webbrowser und das Emailprogramm auslesen.
Das habe ich bereits gefunden

Zitat:
Code:
Environ("COMPUTERNAME") Name des Computers
Environ("HOMEDRIVE") Standardlaufwerk des Benutzers
Environ("OS") Betriebssystemversion
Environ("Path") Pfadangaben für Anwendungen
Environ("ProgramFiles") Pfad zum Programme-Ordner
Environ("SystemDrive") Laufwerk des Betriebssystems
Environ("SystemRoot") Pfad des Betriebssystems
Environ("TEMP") Pfad temporärer Ordner

Aber wie ich das Standard Programm "Webbrowser" oder "Email" auslesen kann finde ich einfach nichts. Kann mir vielleicht jemand helfen?
Hallo Bernie,

in Abwandlung eines codes von vb-fun für den Browser:

Code:
Option Explicit

Private Declare Function FindExecutable Lib "shell32.dll" Alias _
    "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory _
    As String, ByVal lpResult As String) As Long

Private Function StandardBrowser(Browser As String) As String
  Dim sExe As String
  Dim tmpFile As String
  Dim dNr As Integer

  tmpFile = "C:\Test\xxx.html"
  dNr = FreeFile
  Open tmpFile For Output As #dNr
  Close #dNr

  sExe = ExePfad(tmpFile)
  Kill tmpFile

  If sExe <> "" Then
    If InStr(LCase$(sExe), "iexplore") > 0 Then
      Browser = "Microsoft Internet Explorer"
    ElseIf InStr(LCase$(sExe), "netscape") > 0 Then
      Browser = "Netscape Communicator"
    ElseIf InStr(LCase$(sExe), "opera") > 0 Then
      Browser = "Opera"
    Else
      Browser = "kein Browser installiert."
    End If
  End If

  StandardBrowser = sExe
End Function

Private Function ExePfad(ByVal Datei As String) As String
  Dim Pfad As String

  Pfad = Space$(256)
  FindExecutable Datei, vbNullString, Pfad

  If Pfad <> "" Then
    Pfad = Left$(Pfad, InStr(Pfad, vbNullChar) - 1)
  End If

  If UCase$(Pfad) = UCase$(Datei) Then Pfad = ""
  ExePfad = Pfad
End Function

Private Sub Start()
  Dim Browser As String
  MsgBox StandardBrowser(Browser) & vbLf & Browser
End Sub

Der code müsste ggf. für weitere Browser erweitert werden. Für das emailprogramm wird es eventuell etwas komplexer. Wenn Du dieses Prinzip verwendest, müsstest Du die verschiedenen Erweiterungen der unterschiedlichen emailprogramme testen. Statt xxx.html dann also z.B. xxx.msg für Outlook usw.

Es gibt weitere Optimierungsmöglichkeiten. Den Part mit If InStr(LCase$(sExe)... brauchst DU z.B. auch nicht unbedingt ...
Hallo André,

Danke für deine Hilfe, wird ich morgen ausprobieren. Allerdings, wenn das alles zu kompliziert ist, überlege ich, ob nicht der User mir die Daten selber liefert.

Bitte keinen weiteren Stress machen :100: