Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Per VBA prüfen ob Online?

Per VBA prüfen ob Online?
03.03.2009 23:35:19
Tobias
Hallo allerseits,
Kann man per VBA prüfen,
ob der PC online ist?
greez tob

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workaround
04.03.2009 00:13:36
Daniel
Hi
keine Ahnung, ob das irgendwie geht, daher ich lass die Frage mal offen.
aber mit diesem Workaround könntest du dir u.U. behelfen:

Err = 0
On Error Resume Next
'--- hier eine Aktion einfügen, die zu einem Fehler führt, wenn der Rechner nicht online ist
'--- z.B. eine Datei aus einem Netzwerklaufwerk öffnen oder mit "ChangeDrive"
'--- ein Netzwerklaufwerk einstellen
if err = 0 then
Msgbox "Rechner Online"
Else
Msgbox "Keine Online-Verbindung vorhanden"
End if
On error Goto 0
...


Gruß, Daniel

Anzeige
AW: Workaround
04.03.2009 00:14:02
Daniel
Hi
keine Ahnung, ob das irgendwie geht, daher ich lass die Frage mal offen.
aber mit diesem Workaround könntest du dir u.U. behelfen:

Err = 0
On Error Resume Next
'--- hier eine Aktion einfügen, die zu einem Fehler führt, wenn der Rechner nicht online ist
'--- z.B. eine Datei aus einem Netzwerklaufwerk öffnen oder mit "ChangeDrive"
'--- ein Netzwerklaufwerk einstellen
if err = 0 then
Msgbox "Rechner Online"
Else
Msgbox "Keine Online-Verbindung vorhanden"
End if
On error Goto 0
...


Gruß, Daniel

Anzeige
AW: Per VBA prüfen ob Online?
04.03.2009 08:33:54
Oberschlumpf
Hi Tobias
Versuchs mal hiermit:
(alles in ein allgemeines Modul)

Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" (ByRef lpdwFlags As Long, _
ByVal lpszConnectionName As String, ByVal dwNameLen As Integer, ByVal dwReserved As Long) As Long
Dim sConnType As String * 255
Sub sbStart()
Dim Ret As Long
Ret = InternetGetConnectedStateEx(Ret, sConnType, 254, 0)
If Ret = 1 Then
MsgBox "Du bist online!"
Else
MsgBox "Du bist nicht online!"
End If
End Sub


Hilfts?
Ciao
Thorsten

Anzeige
noch eine Version
04.03.2009 09:13:24
Tino
Hallo,
habe hier auch noch eine Version im Angebot.
Diese war ursprünglich dafür gedacht IP-Adressen zu lesen,
etwas umgebaut kann man diese auch dafür nutzen.
PS: verwendet die Winsock dll, wird also wahrscheinlich nur bei Verbindungen funktionieren,
die übers Netzwerk kommunizieren. (Bsp. DSL)
Unter anderer Verbindungsmethode (Bsp. Modem), habe ich es nicht getestet.
Option Explicit
Private Declare Function gethostbyname Lib "WSOCK32.DLL" _
        (ByVal HostName As String) As Long
         
Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal _
        wVersionRequired As Long, lpWSAData As WinSocketDataType) _
        As Long

Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long

Const WS_VERSION_REQD As Long = &H101&

Private Type HostDeType
    hName As Long
    hAliases As Long
    hAddrType As Integer
    hLength As Integer
    hAddrList As Long
End Type

Private Type WinSocketDataType
    wversion As Integer
    wHighVersion As Integer
    szDescription(0 To 128) As Byte
    szSystemStatus(0 To 256) As Byte
    iMaxSockets As Integer
    iMaxUdpDg As Integer
    lpszVendorInfo As Long
End Type

Private Function InitSocketAPI() As Long
    Dim Result As Integer
    Dim SocketData As WinSocketDataType
    InitSocketAPI = WSAStartup(WS_VERSION_REQD, SocketData)
End Function


Private Function Check_Connected(Name As String) As String
    Dim HostDeAddress As Long
  
    HostDeAddress = gethostbyname(Name)
    If HostDeAddress = 0 Then
        Check_Connected = "Keine Verbindung"
     Else
        Check_Connected = "Verbindung besteht"
    End If
   
End Function

Sub Pruefe_Verbindung()
  If InitSocketAPI = 0 Then
     MsgBox Check_Connected("www.google.de")
     Call WSACleanup
  Else
     MsgBox ("Socket Error! Die Verbindung kann nicht geprüft werden")
  End If
End Sub


Gruß Tino

Anzeige
AW: Per VBA prüfen ob Online?
04.03.2009 12:09:29
Tobias
Besten dank,
Ich hab jetzt Oberschlumpfens Lösung verwendet,
die funktioniert bei mir gut !
;
Anzeige
Anzeige

Infobox / Tutorial

Per VBA prüfen, ob der PC online ist


Schritt-für-Schritt-Anleitung

Um per VBA zu prüfen, ob der PC online ist, kannst du folgende Schritte befolgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" wählst.

  3. Kopiere den folgenden Code in das Modul:

    Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" (ByRef lpdwFlags As Long, _
    ByVal lpszConnectionName As String, ByVal dwNameLen As Integer, ByVal dwReserved As Long) As Long
    
    Dim sConnType As String * 255
    
    Sub sbStart()
       Dim Ret As Long
       Ret = InternetGetConnectedStateEx(Ret, sConnType, 254, 0)
       If Ret = 1 Then
           MsgBox "Du bist online!"
       Else
           MsgBox "Du bist nicht online!"
       End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro sbStart aus, um zu prüfen, ob dein PC online ist.


Häufige Fehler und Lösungen

  • Fehler: "Komponente nicht gefunden"

    • Stelle sicher, dass du den Code korrekt kopiert hast und dass dein VBA-Projekt aktiviert ist.
  • Fehler: "Keine Rückmeldung"

    • Dies kann auftreten, wenn eine Internetverbindung nicht hergestellt werden kann. Überprüfe deine Netzwerkverbindung.

Alternative Methoden

Wenn du eine alternative Methode zur Überprüfung der Internetverbindung benötigst, kannst du die Winsock-DLL verwenden. Hier ist ein Beispiel:

Option Explicit

Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal HostName As String) As Long

Private Function Check_Connected(Name As String) As String
    Dim HostDeAddress As Long
    HostDeAddress = gethostbyname(Name)
    If HostDeAddress = 0 Then
        Check_Connected = "Keine Verbindung"
    Else
        Check_Connected = "Verbindung besteht"
    End If
End Function

Sub Pruefe_Verbindung()
    MsgBox Check_Connected("www.google.de")
End Sub

Praktische Beispiele

  1. Verbindung zu Google prüfen: Du kannst die Funktion Check_Connected anpassen, um die Verbindung zu verschiedenen Websites zu prüfen. Ändere einfach den Hostnamen in der Pruefe_Verbindung-Subroutine.

  2. Benutzerdefinierte Meldungen: Passe die MsgBox-Nachrichten an, um personalisierte Rückmeldungen anzuzeigen, je nach Status der Verbindung.


Tipps für Profis

  • Verwende On Error Resume Next, um Fehler während der Ausführung zu ignorieren, und setze On Error GoTo 0, um den Fehlerbehandlungsmodus zu beenden.
  • Integriere diese Prüfungen in größere VBA-Projekte, um sicherzustellen, dass das Skript nur dann ausgeführt wird, wenn eine Internetverbindung verfügbar ist.
  • Nutze Timer, um regelmäßig die Verbindung zu überprüfen, insbesondere in Anwendungen, die auf Online-Daten angewiesen sind.

FAQ: Häufige Fragen

1. Frage Wie kann ich den Code anpassen, um spezifische Websites zu prüfen?

Antwort: Du kannst die Funktion Check_Connected so anpassen, dass sie verschiedene Hostnamen überprüft, indem du den Parameter in Pruefe_Verbindung änderst.

2. Frage Funktioniert dieser Code in allen Excel-Versionen?

Antwort: Ja, der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen. Achte darauf, dass die entsprechenden DLLs auf deinem System verfügbar sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige