2017-01-25 2 views
0

ich ein einzelnes file.bat erstellt haben, die richtig zwei verschiedene vbs-Dateien ausführen:Erstellung von eindeutigen Datei bat

cscript "\\server_1\dir\file_M_1.vbs" "\\server_1\dir\muc1.xlsm" 
cscript "\\server_2\dir\file_H_2.vbs" "\\server_2\dir\muc2.xlsm" 

der Code der beiden files.vbs die gleiche ist, weil es geschaffen wurde, zu tun das Gleiche in zwei verschiedenen Servern.

Dies ist der Inhalt von file_M_1.vbs, dass einfach das Makro "copy_M" genannt läuft:

Dim args, objExcel 
Set args = WScript.Arguments 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Workbooks.Open args(0) 
objExcel.Visible = False 
objExcel.Run "copy_M" 
objExcel.ActiveWorkbook.Save 
objExcel.ActiveWorkbook.Close(0) 
objExcel.Quit 

Statt dessen ist der Code von file_H_2.vbs, das Makro namens "copy_H" läuft:

Dim args, objExcel 
Set args = WScript.Arguments 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Workbooks.Open args(0) 
objExcel.Visible = False 
objExcel.Run "copy_H" 
objExcel.ActiveWorkbook.Save 
objExcel.ActiveWorkbook.Close(0) 
objExcel.Quit 

ich würde gerne wissen, ob es gibt die Möglichkeit, alle drei Teile des Codes zu sammeln in nur eine file.bat oder file.exe (wird auch mit dem Task-Scheduler in einem bestimmten Zeitpunkt ausgeführt werden geplant von Windows7.)

+6

Ist es möglich? Sicher. Werden wir den Code für dich schreiben? Nicht sehr wahrscheinlich. Ändern Sie das Skript so, dass es über "WScript.Arguments" führt und führen Sie die Makros je nachdem, welche Datei Sie geöffnet haben, aus. Führen Sie das VBScript mit einer Argumentliste aus, die aus beiden Arbeitsmappen besteht. –

Antwort

1

Ich habe das Problem auf diese Weise gelöst. Mit Hilfe von anderen, die wir nur eine file.bat erstellt haben:

cscript "\\server1\dir\file.vbs" 

läuft es die file.vbs:

Dim objExcel 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Workbooks.open("\\server1\dir\muc1.xlsm") 
objExcel.Visible = False 
objExcel.Run "copy_M" 
objExcel.ActiveWorkbook.Save 
objExcel.ActiveWorkbook.Close 
objExcel.Workbooks.open("\\server2\dir\muc2.xlsm") 
objExcel.Visible = False 
objExcel.Run "copy_H" 
objExcel.ActiveWorkbook.Save 
objExcel.ActiveWorkbook.Close 
objExcel.Quit 

es läuft perfekt. Ich habe den Task Scheduler von Windows7 in die Datei.bat gesteckt und alles ist in Ordnung.

I don 't wissen, ob es möglich ist nur eine .exe (keine .bat, die vbs läuft) erstellen

+0

können Sie eine [Hybrid-Datei] (http://stackoverflow.com/questions/38621603/hybrid-batch-vbs-autorun-as-administrator) – Stephan

+0

Ich * stark * empfehlen gegen das Schreiben von Frankenscript so. Wartung und Fehlerbehebung ist ein großer Schmerz in der Rückseite. –

+0

@il_betto Sie können 'objExcel.DisplayAlerts = False 'hinzufügen, da Sie das Skript als geplante Aufgabe ausführen. –