Tak sobie siedziałem i wymyśliłem jak np. można przetestować połączenie poleceniem ping a wyniki wstawić do Excela :
Option Explicit
Dim czasBadania As Date
Dim Opoznienie(0 To 2) As Integer 'w tej tablicy siedzą czasy opóźnień
Private Sub CzytajPlik()
'procedura odpowiedzialna za odczyt plików i "wydłubanie" istnotnych wartości
Dim fso As Object, plik As Object
Dim strSciezka As String
Dim calyPlik
Dim strLinia As String
Dim CzasOpoznienia(0 To 2) As String
Dim tempZnak As String
Dim i, j As Integer
strSciezka = "c:\test\info.txt" 'sciezka do pliku z efektem działania polecenia ping
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(strSciezka)) Then
Set plik = fso.OpenTextFile(strSciezka, 1) 'otwarcie do odczytu
i = 1 'start licznika linii
Do While Not plik.AtEndOfStream
strLinia = plik.ReadLine
If i = 23 Then
'Interesująca linia w pliku - nr 23
'porzucenie pętli
Exit Do
End If
i = i + 1
Loop
plik.Close
Else
MsgBox "Plik nie istnieje"
End If
i = 1: j = 0
Do While (i <= Len(strLinia))
tempZnak = Mid(strLinia, i, 1)
If IsNumeric(tempZnak) Then
CzasOpoznienia(j) = CzasOpoznienia(j) + tempZnak
If Not (IsNumeric(Mid(strLinia, (i + 1), 1))) Then
'nastepny znak nie jest liczba
'iteracja licznika tablicy z czasami
'UWAGA : Petla zadziala rowniez przy separatorze
j = j + 1
End If
End If
i = i + 1
Loop
Opoznienie(0) = CInt(CzasOpoznienia(0))
Opoznienie(1) = CInt(CzasOpoznienia(1))
Opoznienie(2) = CInt(CzasOpoznienia(2))
End Sub
Public Sub DodajWiersz()
'dodaje wartości do pierwszego wolnego wiersza
Dim nrWiersza As Integer
Dim index As Integer
index = 1
Do While (Worksheets("Arkusz1").Cells(index, 1).Value <> "")
'podbno mało eleganckie - ale działa
index = index + 1
Loop
Worksheets("Arkusz1").Cells(index, 1).Value = czasBadania 'kolumna A
Worksheets("Arkusz1").Cells(index, 2).Value = Opoznienie(0) 'kolumna B - czas minimalny
Worksheets("Arkusz1").Cells(index, 3).Value = Opoznienie(1) 'kolumna C - czas maksymalny
Worksheets("Arkusz1").Cells(index, 4).Value = Opoznienie(2) 'kolumna D - czas średni
End Sub
Public Sub SprawdzPolaczenie()
'użycie polecenia ping z pliku wsadowego z utworzeniem
'pliku raportu info.txt w c:\test
Dim dblTest As Double
Dim strPolecenie As String
Dim startTime As Date
Dim lsekund As Date
czasBadania = Time()
'z poziomu Excela należy uruchomić nie polecenie 'ping'
'tylko plik wsadowy c:\test\pingBAT.bat takiej treści:
'ping 127.0.0.1 > c:\test\info.txt
'(oczywiście nic nie stoi żeby plik wsadowy stworzyć z poziomu VBA
'i wtedy IP hosta może być wypełniane z makra)
strPolecenie = "c:\test\pingBAT.bat"
dblTest = Shell(strPolecenie, vbHide)
'Ponieważ wykonanie polecenia ping zajmuje kilka sekund (ok.4)
'trzeba wstawić opóźniacz, żeby plik info.txt został utworzony.
'Jeżeli wartość opóźnienia będzie zbyt mała makro może
'próbować przeprowadzać eksperymenty na właśnie tworzonym pliku
startTime = Time()
Do While (lsekund <= TimeValue("00:00:07"))
lsekund = Time() - startTime
Loop
Call CzytajPlik
Call DodajWiersz
End Sub
Private Sub CommandButton1_Click()
Call SprawdzPolaczenie
End Sub
To tylko taki przykład - nie ma kawałka obsługi błędów. |