16.04.2013

Internetexplorer - bestimmte Fenster schliessen - API...

Frage: Gestern haben wir versucht mittels "Shell" bestimmte Internetexplorerfenster zu beenden. Falls das - aus welchem Grund auch immer - nicht funktioniert, hier eine Möglichkeit per "API". Die Sub "Main_1" dient nur dazu den Internetexplorer mit bestimmten Seiten mehrmals zu starten.

Yesterday we tried using "shell" to terminate certain Internet Explorer window. If - for whatever reason - does not work, here's a way by "API". The Sub "Main_1" serves only to Internet Explorer with certain pages to start several times.

Hier noch eine Beispieldatei / Here's a sample file:
Internetexplorer - bestimmte Fenster schliessen - API...[XLS 50 KB]

Option Explicit
' Quelle: http://support.microsoft.com/kb/147659/en-us/
Private Declare Function GetParent Lib "user32" _
    (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "user32" _
    Alias "FindWindowA" (ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" _
    Alias "PostMessageA" (ByVal hwnd As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, _
    ByVal lParam As Long) As Long
Private Declare Function GetWindowText Lib "user32" _
    Alias "GetWindowTextA" (ByVal hwnd As Long, _
    ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
    ByVal wCmd As Long) As Long
Const GW_HWNDNEXT = 2
Const WM_CLOSE = &H10
' Das ist ein Teil der Caption des Internetexplorerfensters - anpassen!!!!
Const strSearch As String = "pur... - Windows Internet Explorer"
'--------------------------------------------------------------------------
' Module    : Module1
' Procedure : Main
' Author    : Case (Ralf Stolzenburg)
' Date      : 16.04.2013
' Purpose   : API - Bestimmtes Internetexplorer Fenster schliessen...
'--------------------------------------------------------------------------
Public Sub Main()
    Dim lngReturnValue As Long
    Dim strTMP As String * 256
    Dim lngHwnd As Long
    On Error GoTo Fin
    lngHwnd = FindWindow(vbNullString, vbNullString)
    Do While Not lngHwnd = 0
        If GetParent(lngHwnd) = 0 Then
            GetWindowText lngHwnd, strTMP, 256
            If InStr(strTMP, strSearch) > 0 Then
                lngReturnValue = PostMessage(lngHwnd, WM_CLOSE, 0&, 0&)
            End If
        End If
        lngHwnd = GetWindow(lngHwnd, GW_HWNDNEXT)
    Loop
Fin:
    If Err.Number <> 0 Then MsgBox "Error: " & _
        Err.Number & " " & Err.Description
End Sub
Public Sub Main_1()
    ' NUR zum testen. Der IE wird viermal aufgerufen
    ' Dreimal mit meiner Blogseite und einmal mit einem Excelforum
    On Error GoTo Fin
    Call IE_Run("http://vbanet.blogspot.de/")
    Call IE_Run("http://vbanet.blogspot.de/")
    Call IE_Run("http://vbanet.blogspot.de/")
    Call IE_Run("http://www.herber.de/forum/")
Fin:
    If Err.Number <> 0 Then MsgBox "Error: " & _
        Err.Number & " " & Err.Description
End Sub
'--------------------------------------------------------------------------
' Module    : Module1
' Procedure : IE_Run
' Author    : Case (Ralf Stolzenburg)
' Date      : 16.04.2013
' Purpose   : Internetexplorer mit bestimmten Seiten starten...
'--------------------------------------------------------------------------
Private Sub IE_Run(ByVal strAddress As String)
    Dim objIEApp As Object
    Set objIEApp = CreateObject("InternetExplorer.Application")
    With objIEApp
        .Navigate strAddress
        Do: Loop Until .Busy = False
        Do: Loop Until .Busy = False
        .Visible = True
    End With
    Set objIEApp = Nothing
End Sub

Formeln auf einer UserForm in einer TextBox darstellen...

Formeln auf einer UserForm in einer TextBox anzeigen. Z. B. "Formula", "FormulaLocal"... und wie muss die Formel in VBA ...