Hallo liebe Leute,
ich habe mir zur Dateiverwaltung im Heimnetzwerk eine batch Datei erstellt, diese über vbs mit einer Excel Tabelle verknüpft und die .bat beim Starten im Hintergrund mit auszuführen. Das funktioniert so auch bestens. Nun ergibt sich aber das Problem, dass im Netzwerk das Ausführen der .vbs und auch der .bat extra bestätigt werden muss, was einfach nervt. Außerdem möchte ich nicht extra 3 Dateien haben, sondern am liebsten nur die .xlsm. Ich würde das Ganze daher gern optimieren und den Code in VBA übertragen und in einem Excel Makro ausführen.
Der Derzeitige Stand sieht so aus:
Es liegen insgesamt 3 Dateien vor. Eine .xlsm (Kennwort zum Bearbeiten gesetzt), eine .bat mit Befehlen und eine .vbs als Startintitiator für beide Dateien. Außerdem wird im Anschluss noch eine .txt erzeugt.
Die .vbs hat den code:
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open _
("Pfad_und_Datei.xlsm")
If objWorkbook.ReadOnly = True Then
If MsgBox("Die Datei ist kennwortgeschützt bzw. wird zur Zeit bearbeitet. Soll die Datei schreibgeschützt geöffnet werden?", 33, "Datei wird verwendet") = 1 Then
objExcel.Visible = True
Else
objWorkbook.Close False
Set objExcel = Nothing
End If
Else
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "dat.bat",0,True
objExcel.Visible = True
End If
Beim Ausführen wird die Excel Tabelle geöffnet und im Hintergrund die .bat ausgeführt. Diese erstellt eine Übersicht über alle Dateien in bestimmten Ordnern, in denen die Zeichenfolge "log" vorkommt und außerdem eine Gesamtübersicht über die Dateistruktur in einem der Ordner.
Der Code der .bat lautet so:
echo %username% %computername% %date% %time% > user\%username%_%date%.txt
echo ------------------------------------ >> user\%username%_%date%.txt
echo. >> user\%username%_%date%.txt
echo log >> user\%username%_%date%.txt
echo ------------------------------------ >> user\%username%_%date%.txt
findstr /SIMP "log" H:\ "*.*" >> user\%username%_%date%.txt
findstr /SIMP "log" E:\ "*.*" >> user\%username%_%date%.txt
echo. >> user\%username%_%date%.txt
echo Struktur lokale Nutzerdaten >> user\%username%_%date%.txt
echo ------------------------------------ >> user\%username%_%date%.txt
cd H:\
tree H:\ /f /a >> user\%username%_%date%.txt
end
Anschließend übertrage ich die Informationen aus der generierten .txt Datei derzeit in ein neues Tabellenblatt innerhalb der vorliegenden Excel Tabelle, was nicht wirklich galant ist.
Ziel: Gibt es eine Möglichkeit die Befehle der .bat in ein Makro umzuformulieren um das gleiche Ergebnis zu erzielen (sich somit die .vbs zu ersparen) und dieses nachfolgend in ein neues Tabellenblatt zu schreiben, anstatt in eine zusätzliche .txt?
Ich hoffe ihr könnt helfen, ich wäre euch wirklich sehr dankbar. Leider habe ich nicht wirklich viel Ahnung von Programmierung und habe mir alle Codeschnipsel nur mühsam aus dem Internet zusammengetragen, bis ich ein Ergebnis hatte, mit dem ich für den Moment leben konnte.
LG Fritz
|