[Excel 2003] Resultaten in tekst bestand opslaan

Pagina: 1
Acties:

  • SilentNL
  • Registratie: Augustus 2005
  • Laatst online: 05-05 22:54
Hallo,

voor mijn werk moet ik de geinstalleerde software op de computers nakijken maar ik wil dit het liefst zonder programmatjes doen om de computers schoon te houden. Daarom heb ik van de IT'er een vbs script gekregen, maar dit geeft pop-ups in windows met de informatie en ik wil het het liefst opgeslagen zien in een bestand. Ik heb redelijke kennis van virtual basic maar dit gaat me mijn pet te boven, dus daarom vraag ik het hier maar.

De script die ik gekregen heb ziet er als volgt uit:

Option Explicit

Dim objWbem
Dim colInstProducts
Dim objProduct
Dim colFeatures
Dim objFeature
Dim blnDetails
Dim strComputer

'On Error Resume Next
'Err.Clear

If WScript.Arguments.Count = 0 Then
blnDetails = False
ElseIf WScript.Arguments.Count = 1 Then
If UCase(WScript.Arguments(0)) = "TRUE" Then
blnDetails = True
Else
blnDetails = False
End If
ElseIf WScript.Arguments.Count = 2 Then
If UCase(WScript.Arguments(0)) = "TRUE" Then
blnDetails = True
Else
blnDetails = False
End If

strComputer = WScript.Arguments(1)
Else
blnDetails = False
End If

If WScript.Arguments.Count = 2 Then
Set objWbem = GetObject("winMgmts:\\" & strComputer)
Set colInstProducts = objWbem.InstancesOf("Win32_Product")
Else
Set objWbem = GetObject("winmgmts:\\" & strComputer)
Set colInstProducts = objWbem.InstancesOf("Win32_Product")
End If

If WScript.Arguments.Count <> 2 Then
WScript.Echo "This report lists all the software " & _
"products installed on [This Computer]"
Else
WScript.Echo "This report lists all the software " & _
"products installed on [" & UCase(strComputer) & "]"
End If

WScript.Echo " under the control of the Windows Installer"
WScript.Echo ""


If Err <> 0 Then
WScript.Echo "Could not connect to WMI"
WScript.Quit
End If

'Loop through Products adding report entries
For Each objProduct In colInstProducts
WScript.Echo "-----------------------------------------"
WScript.Echo objProduct.Name
WScript.Echo Space(5) & "Version: " & objProduct.Version
WScript.Echo Space(5) & "IndentifyingNumber: " & objProduct.IdentifyingNumber
WScript.Echo Space(5) & "Description: " & objProduct.Description
WScript.Echo Space(5) & "Vendor: " & objProduct.Vendor
WScript.Echo Space(5) & "Install Date: " & GetVbDate(objProduct.InstallDate)
WScript.Echo Space(5) & objProduct.InstallDate

If blnDetails = True Then
Set colFeatures = objProduct.Associators_("Win32_ProductSoftwareFeatures")
For Each objFeature In colFeatures
WScript.Echo Space(10) & "--------------------------"
WScript.Echo Space(10) & "Name: " & objFeature.Name
WScript.Echo Space(10) & "Desc: " & objFeature.Description
WScript.Echo Space(10) & "Version: " & objFeature.Version
WScript.Echo Space(10) & "Product Name: " & objFeature.ProductName
WScript.Echo Space(10) & "Vendor: " & objFeature.Vendor
WScript.Echo Space(10) & "# Accesses: " & objFeature.Accesses
WScript.Echo Space(10) & "ID: " & objFeature.IdentifyingNumber
WScript.Echo Space(10) & "Install Date: " & GetVbDate(objFeature.InstallDate)
WScript.Echo Space(10) & "Last Used Date: " & GetVbDate(objFeature.LastUse)
Next
End If

Next

Function GetVbDate(sDate)
On Error Resume Next
Dim strDate

If IsNull(sDate) Then
GetVbDate = "Unknown"
Else
strDate = DateSerial(Mid(sDate, 1, 4), _
Mid(sDate, 5, 2), _
Mid(sDate, 7, 2))
If strDate = "11/30/1979" Then
GetVbDate = "(Default Date, 1980)"
Else
GetVbDate = strDate
End If
End If
End Function


Ik hoop dat jullie me kunnen helpen om de gevonden gegevens in een tekstbestand op te slaan, op de desktop bijvoorbeeld.

  • Reinier
  • Registratie: Februari 2000
  • Nu online

Reinier

\o/

Virtual Basic? Da's een mooie ;)

Visual dus. Met het FileSystemObject kun je alles wat jij wilt: http://msdn2.microsoft.com/en-us/library/6kxy1a51.aspx. Textbestandje aanmaken en de output van je script in de file wegschrijven dus.

  • SilentNL
  • Registratie: Augustus 2005
  • Laatst online: 05-05 22:54
Reinier schreef op woensdag 01 augustus 2007 @ 13:53:
Virtual Basic? Da's een mooie ;)

Visual dus. Met het FileSystemObject kun je alles wat jij wilt: http://msdn2.microsoft.com/en-us/library/6kxy1a51.aspx. Textbestandje aanmaken en de output van je script in de file wegschrijven dus.
visual ja, |:( ben de laatste tijd zoveel bezig met virtual basic dat ik er zwetend wakker van wordt.

bedankt voor de tip, ga nu kijken

[ Voor 0% gewijzigd door SilentNL op 01-08-2007 14:02 . Reden: typo ]


  • Reinier
  • Registratie: Februari 2000
  • Nu online

Reinier

\o/

En in Excel kun je zelfs open gebruiken, nog een stuk eenvoudiger.
In deze vorm dus:
Visual Basic:
1
Open pathname For mode [access] [lock] As [#]filenumber [Len=reclength]


WD2000: Using the Open Statement in Word VBA

  • SilentNL
  • Registratie: Augustus 2005
  • Laatst online: 05-05 22:54
Hallo,

Ik heb hem zelf aangepast naar:

Option Explicit

Dim objWbem
Dim colInstProducts
Dim objProduct
Dim colFeatures
Dim objFeature
Dim blnDetails
Dim strComputer
Dim WshNetwork
Dim objFSO, objFolder, objShell, objTextFile, objFile
Dim strDirectory, strFile, strText
strDirectory = "T:\IT\Tools Development"
strFile = "\systeminfo ingebruik.xls"

'Create the File System Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strDirectory)


check


' OpenTextFile Method needs a Const value
' ForAppending = 8 ForReading = 1, ForWriting = 2
Const ForAppending = 8

Set objTextFile = objFSO.OpenTextFile (strDirectory & strFile, ForAppending, True)
Set WshNetwork = WScript.CreateObject("WScript.Network")

'On Error Resume Next
'Err.Clear

If WScript.Arguments.Count = 0 Then
blnDetails = False
ElseIf WScript.Arguments.Count = 1 Then
If Ucase(WScript.Arguments(0)) = "TRUE" then
blnDetails = True
Else
blnDetails = False
End If
ElseIf WScript.Arguments.Count = 2 Then
If Ucase(WScript.Arguments(0)) = "TRUE" then
blnDetails = True
Else
blnDetails = False
End If

strComputer = WScript.Arguments(1)
Else
blnDetails = False
End If

If WScript.Arguments.Count = 2 Then
Set objWbem = GetObject("winMgmts:\\" & strComputer)
Set colInstProducts = objWbem.InstancesOf("Win32_Product")
Else
Set objWbem = GetObject("winmgmts:\\" & strComputer)
Set colInstProducts = objWbem.InstancesOf("Win32_Product")
End If

If Err <> 0 Then
WScript.Echo "Could not connect to WMI"
WScript.Quit
End If

objTextFile.WriteLine ("Computername,Name,Version,IndentifyingNumber,Description,Vendor,Install Date")
'Loop through Products adding report entries
For Each objProduct in colInstProducts
objTextFile.WriteLine (WshNetwork.ComputerName &","& objProduct.Name &","& objProduct.Version &","& objProduct.IdentifyingNumber &","& objProduct.Description &","& objProduct.Vendor &","& GetVbDate(objProduct.InstallDate) &","& objProduct.InstallDate)


If blnDetails = True Then
Set colFeatures = objProduct.Associators_("Win32_ProductSoftwareFeatures")
For Each objFeature in colFeatures
objTextFile.WriteLine (WshNetwork.ComputerName &","& objFeature.Name & "WshNetwork.Computername" &","& objFeature.Description &","& objFeature.Version &","& objFeature.ProductName &","& objFeature.Vendor &","& objFeature.Accesses &","& objFeature.IdentifyingNumber &","& GetVbDate(objFeature.InstallDate) &","& GetVbDate(objFeature.LastUse))
Next
End If

Next
objTextFile.close

objFSO.moveFile "T:\IT\Tools Development\systeminfo ingebruik.xls" , "T:\IT\Tools Development\systeminfo.xls"
Wscript.Echo "Bedankt voor uw medewerking"


Function GetVbDate(sDate)
On Error Resume Next
Dim strDate

If IsNull(sDate) Then
GetVbDate = "Unknown"
Else
strDate = DateSerial(Mid(sDate, 1, 4), _
Mid(sDate, 5, 2), _
Mid(sDate, 7, 2))
If strDate = "11/30/1979" Then
GetVbDate = "(Default Date, 1980)"
Else
GetVbDate = strDate
End If
End If
End Function


Sub check
If objFSO.FileExists(strDirectory & "\systeminfo.xls") Then
Wscript.Echo "Even geduld svp, dit kan enkele seconden duren"
objFSO.MoveFile "T:\IT\Tools Development\systeminfo.xls" , "T:\IT\Tools Development\systeminfo ingebruik.xls"
wscript.sleep 1000
Else
Wscript.Echo "Bestand is momenteel in gebruik, een moment geduld aub"
WScript.Sleep 2000
check
End If
end sub


en hij werkt perfect! alsnog bedankt voor de hulp die jullie verleenden