Read Excel

Dieses Script habe ich aus der Anforderung heraus geschrieben, die SW-Inventur von SMS mit dem Inhalt eines DFS-Share zu vergleichen.
Die Inventur von SMS wird aus einem gelieferten Excelsheet gelesen und mit dem Inhalt einer CSV-Datei verglichen.
Zum guten Schluss wird in eine dritte Datei das Ergebnis geschrieben.





option explicit
'on error resume next

Dim excin, exc_wb, introw, wshell, fso, strg, zeile, bFound
Dim csvin, csvout, i

Set wshell = WScript.CreateObject("Wscript.shell")
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set excin = CreateObject("Excel.Application")
Set exc_wb = excin.Workbooks.Open ("D:Packages and Programs.xls")

set csvout = fso.opentextfile("D:schnittmenge.csv",2,True)

intRow = 2
i=0

'Lies das Excel-Sheet (in der Spalte 13)bis zum Schluss
do while not (excin.Cells(intRow,1).Value="")
strg = excin.Cells(intRow, 13).Value
'Extrahiere den benötigten String (durch Replace)
strg=Replace(strg, " /SMS" ,"")
strg=Replace(strg, " /sms" ,"")

'Vorbedingung für den Such-String ist das Wort "Deinstallationen"
'Danach wird der Dateihandle für die CSV-Datei geöffnet
if instr (strg,"_Deinstallationen") then
set csvin = fso.opentextfile("D:dfs_share.csv",1)

bFound = false 'Das ist richtig gut. Ein Returncode wird gesetzt
do while not (csvin.AtEndOfStream)

'Lies das korrespondierende CSV-File zeilenweise
zeile=csvin.readline

' Der aus dem Excel-Sheet gewonnene String wird jetzt formatiert
' und in der CSV-Datei gesucht. Wenn gefunden, dann wird der ReturnCode positiv gesetzt
' bFound also auf true gesetzt und aus dem inneren do-Loop gesprungen

if instr (trim(lcase(zeile)),trim(lcase(strg)))
then
csvout.writeline "SMS-Paket ist auf dem DFS-Share : " & strg
bFound = true
exit do
end if


loop
'Da der Dateihandle jetzt am Ende der Datei steht, wird er geschlossen.
csvin.Close
'Ist bFound nicht gesetzt, also steht er noch auf "FALSE"
'schreib die zweite Möglichkeit in das CSV
if not bFound then
csvout.writeline " SMS-Paket existiert nicht auf dem DFS-Share : " & strg
end if

end if

intRow = intRow + 1




Loop

excin.Quit
excin.Workbooks.close

msgbox "Überprüfung abgeschlossen", 64, "Auswertung"

  • Donnerstag, 15 März 2018

Leave a comment

You are commenting as guest.