|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2000
Messaggi: 12166
|
[EXCEL] pingare una serie di host
Ciao a tutti, devo fare un foglio excel con una macro che funzioni così
colonna A = elenco di nomi di pc (stiamo sui 300 circa) colonna B = risultato del ping (mi basta sapere se l'host è vivo o meno) Avete qualche idea, contando che sono completamente a zero in fatto di programmazione?
__________________
645Z & some glass |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2007
Città: Milano
Messaggi: 413
|
Non vorrei deluderti ma excel non è fatto per queste cose. Una cosa del genere si fa abbastanza velocemente con un qualsiasi linguaggio di programmazione, non con un foglio elettronico.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2000
Messaggi: 12166
|
D'accordo, ma avere un riscontro visivo immediato del risultato dei ping mi farebbe molto comodo.
__________________
645Z & some glass |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
Codice:
ping (le tue opzioni) xxx.xxx.xxx.xxx > aliveHosts.txt
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2000
Messaggi: 12166
|
sono 300 host... e potrebbero cambiare gli ip quindi non posso andare con l'indirizzo di rete
__________________
645Z & some glass |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Credo tu possa farlo anche con Excel utilizzando un po' di VBA, visto che (purtroppo) ti permette tranquillamente di lanciare programmi esterni, quindi anche quelli della shell.
Ad esempio, mi viene in mente una macro del genere Codice:
Dim i As Integer
Dim cmd As String
dim MAX_HOST as Integer
MAX_HOST = 300
For i = 1 To MAX_HOST
cmd = "ping " & Cells(i, 1) & " >> c:\temp.txt"
Shell "cmd /c " & cmd, vbHide
Next i
End Sub
__________________
Il sole è giallo |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
oppure una robina così in dos
Codice:
echo off for /F "tokens=* delims= " %%a in (host.txt) do call :PROVA %%a :PROVA set host=%1 ping -n 1 %host%>NULL goto pong%ERRORLEVEL% %host% goto :EOF :pong0 echo %1 - LIVE goto :EOF :pong1 echo %1 - DEAD goto :EOF
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
2. La soluzione che ti propongo, solo apparentemente più complicata, è di sfruttare la potenza di .NET ( basta che ti scarichi VB.NET Express 2008, gratuito ). Tutto quello che serve è una semplicissima Form VB con un pulsante. Dal momento che VB.NET da decisamente del tu a networking e applicativi Office, perchè non sfruttarlo ? In VB.NET il Ping è tanto semplice quanto lo è pensarlo : Codice:
Try
risultatoPing = My.Computer.Network.Ping(nomeHost, timeOutPing)
If risultatoPing = True Then
MsgBox("OK")
Else
MsgBox("TimeOut")
End If
Catch ex As Exception
MsgBox("Errore")
End Try
Codice:
Public Class Form1
Private appExcel As New Microsoft.Office.Interop.Excel.Application
Private Sub cmd_ping_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_ping.Click
Dim percorso As String = Application.StartupPath & "\"
Dim nomeFile As String = "Hosts.xls"
Dim WB As Microsoft.Office.Interop.Excel.Workbook = appExcel.Workbooks.Open(percorso & nomeFile)
Dim WS As Microsoft.Office.Interop.Excel.Worksheet = WB.Worksheets("Foglio1")
appExcel.Visible = True
Dim nomeHost As String = ""
Dim risultatoPing As Boolean = False
Dim timeOutPing As Integer = 1000 'millisec
For i As Integer = 1 To 5
nomeHost = WS.Range("A" & i).Text
Try
risultatoPing = My.Computer.Network.Ping(nomeHost, timeOutPing)
If risultatoPing = True Then
WS.Range("B" & i).FormulaR1C1 = "OK"
Else
WS.Range("B" & i).FormulaR1C1 = "TimeOut"
End If
Catch ex As Exception
WS.Range("B" & i).FormulaR1C1 = "Errore"
End Try
Next
End Sub
End Class
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:15.




















