Hov - kom til at klikke afvis.
Aheiss, du får 120 point for super hjælp i denne sag (skal lige finde ud af hvorledes jeg får dem overført til dig).
Macro/funktionerne virker fint nu (der skulle lige tweakes lidt med timeout - nogle hosts er længe om at svare)
Jeg har lavet arket således at i [a1] er der en tæller der læses/opdateres af macroen. Tælleren angiver hvilken kolonne der skal fyldes tal i, dvs. jeg kan få en historik over diskforbrug på en række servere og lave grafer derover.
Jeg forsøgte mig lidt med 'date' og 'time' funktionerne, men kunne ikke få et brugbart resultat i een celle (nu bruger jeg 'now'), men ville gerne have et eksempel på hvorledes jeg kan få dato/tid i eet felt (OG lave beregninger på feltet (fx antal dage mellem datoerne)).
Er der en smart måde i macro at generere en 'scatter chart'?
Jeg har data i rækkerne, med legend i a & b (hostnavn, drive), X-data i række 1. (datoen for kørslen) og Y-data i c,d,e,f...., samt en tæller der viser hvor langt cellerne er fyldt ud med data.
Angående WMI spørgsmålet - det betyder Windows Management Instrumentation, og er en kilde/metode til at trække alle mulige former for data ud af Windows og ikke mindst konfigurere og administrere windows fra scripts.
http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechnol/windowsserver2003/proddocs/standard/ref_prog_winwmiref.asphttp://techsupt.windowware.com/TS/T000001002F1.htmlHer er koden som den endte op med:
Function GetDSU(stHost As String, stDrive As String, stFName As String)
Dim ifreefil As Long, textline As String
mappe = "c:\temp\"
getfil = mappe & "fil2.txt"
batfil = "c:\temp\dsu_excel.bat"
Shell batfil & " " & stHost & " " & stDrive & " > " & stFName
taller = 1
omigen:
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 1
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
If taller = 20 Then ' max ventetid
GetDSU = "timeout"
Exit Function
End If
If Dir(getfil, vbNormal) = "" Then
taller = taller + 1
GoTo omigen
Else
On Error GoTo omigen
ifreefil = FreeFile
Open stFName For Input As #ifreefil
Line Input #ifreefil, textline
Close #ifreefil
GetDSU = textline
End If
End Function
Sub dsu()
Dim getfil As String, ColumnOffset As Long
getfil = "c:\temp\fil2.txt"
ColumnOffset = Cells(1, 1)
Cells(1, 1) = ColumnOffset + 1
Cells(1, ColumnOffset) = Now
For a = 2 To 60000
If Dir(getfil, vbNormal) <> "" Then
On Error Resume Next
Kill getfil
End If
If Cells(a, 1) = "" Then
Exit Sub
End If
Dim drive As String
Dim host As String
host = Cells(a, 1)
drive = Cells(a, 2)
data = GetDSU(host, drive, getfil)
Cells(a, ColumnOffset) = data
Next
End Sub