# Aus Excel heraus eine Batch Datei ausführen



## olitheis (28 Juni 2011)

Hallo,
ich möchte aus Excel (2003) heraus eine Batch Datei ausführen.
Und zwar soll eine Zelle "überwacht" werden, und wenn der Inhalt/Wert der Zelle "1" ist, soll beispielsweise die Batch Datei _*test.bat*_ ausgeführt werden.
Wie könnte man das am sinnvollsten realisieren?

Vielen Dank
Oli


----------



## vierlagig (28 Juni 2011)

```
Dim x As Double
x = Shell("Test.bat", vbMaximizedFocus)
```


----------



## olitheis (28 Juni 2011)

Hallo vierlagig,
danke für die schnelle Antwort.
Aber könntest Du mit evtl. für meine Anwndung ein Beispiel dazu geben? Leider bin ich mit VB nicht so fit .
Wo müsste der Code hin und wie genau sieht er aus, damit z.B. die Zelle A1 auf den Wert "1" überwacht wird und entsprchend die test.bat ausgeführt würde.

Vielen Dank
Oli


----------



## vierlagig (28 Juni 2011)

alt+F11
Diese Arbeitsmappe (links im baum)

code


```
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim x As Double
    If Sheets(1).Range("A1").Value = 1 Then
    x = Shell("c:\Temp\test.bat", vbMaximizedFocus)
    End If
End Sub
```

einfügen

speichern

im tabellenblatt 1 die zelle a1 editieren, mit enter bestätigen
fertig.


----------



## olitheis (29 Juni 2011)

Hallo vierlagig,
das funktioniert schonmal prima!

Ich habe da jetzt aber noch ein Problem. Und zwar wird die Sache komplexer als ich dachte:
Ich habe eine Logdatei (vom Accon S7EasyLog) im csv-Format (Semikolon-getrennt). Diese Datei beinhaltet u. A. Uhrzeit, Datum, 24 Variablen und eben diese eine Variable, die das Ausführen der Batch Datei auslösen soll. In der angehängten Beispieldatei wäre das Spalte AA.
In diese csv Datei wird zyklisch vom EasyLog nachgeschoben. 
(ich glaube aber, dass die csv Datei dabei nicht geöffnet sein darf!)

Jetzt kommt der Haken: Die Spalte AA müsste jetzt überwacht werden und wenn der Wert in der akutellsten Zelle "1" wird müsste die Batch Datei ausgeführt werden.
D.h., dass die csv Datei ggf. in eine Excel Tabelle eingelesen werden müsste und die entsprechende Zelle auf die die Änderung überwacht werden.
Die ganze Sache läuft *nicht* zeitkritisch ab. Also könnte z.B. die CSV Datei alle 5min. in die Tabelle neu eingelesen werden (oder alternativ, wenn die csv Datei eine neue Zeile bekommt).
Der S7EasyLog bietet ja die Möglichkeit, täglich, wöchentlich, monatllich usw. neue Dateien mit entsprechenden Namen anzulegen. So würde die Sache etwas übersichtlicher und ein Überlauf würde verhindert Ich weiß aber nicht, ob sich dass mit dem autom. Einlesen dann immer noch vereinbaren lässt.
Das wäre jetzt der Ansatz, den ich hätte, vielleicht kann man das auch anders/einfacher realisieren, evtl. sogar nur die csv Datei überwachen(?) um die Batch Datei auszuführen.
Das mit dem Import in eine Tabelle wäre da schon Vorteilhaft, wenn man sich die Daten zwecks Prod. Überwachung anschauen möchte.
Könnte aber auch getrennt voneinander ablaufen.

Nochmals vielen Dank
Oli


----------



## olitheis (29 Juni 2011)

Hier ist die Beispiel csv Datei.


----------



## vierlagig (29 Juni 2011)

es geht also um den email versand und um die aufzeichnung von daten...
ich empfehle eine lösung mit SQL und .net, excel müßte ja sonst immer irgendwie im hintergrund laufen, das macht sich mit einem dienst schöner...


----------



## olitheis (29 Juni 2011)

Hallo, 
ja, es soll bei Bedarf eine e-mail abgesetzt werden.
Aber mit SQL und .net bin ich total überfordert, sei denn Du hättest hier eine Lösung parat.
Wenn wir es mit Excel hinbekämen, wäre das schon einmal ein Anfang. Der PC, wo die Loggersoftware läuft, muss sowieso die ganze Zeit laufen. Es wäre also nicht tragisch, wenn auch noch Excel im Hintergrund laufen würde.
Danke
Oli


----------



## vierlagig (29 Juni 2011)

olitheis schrieb:


> sei denn Du hättest hier eine Lösung parat.



mit einem belastbaren pflichtenheft - ja, in wenigen tagen für, sagen wir, um die 500€


----------



## olitheis (29 Juni 2011)

hmm, würdest Du mir denn evtl. hilfreich zur Seite stehen, bei der Ausarbeitung der Excel Version?


----------



## vierlagig (29 Juni 2011)

olitheis schrieb:


> hmm, würdest Du mir denn evtl. hilfreich zur Seite stehen, bei der Ausarbeitung der Excel Version?



vba ist für sowas echt nicht geeignet - auch wenn es geht

mit der bat versendest du die mail?
smtp? oder wie?


----------



## Aventinus (29 Juni 2011)

Läuft an der Anlage schon irgendwo WinCCflexible oder WinCC?


----------



## olitheis (29 Juni 2011)

Ich verwende "Postie" von infrading:
http://www.infradig.com/.


> Send email or receive email from the command line (Postie)


Mit der Batch Datei rufe ich postie auf. In der Batch Datei stehen alle Infos, wie z.B. smtp, Absender, Empfänger, Betreff, Meldung usw... funktioniert prima. Ich habe es auch getestet mit Deinem Code.

@Aventinus
auf der Anlage läuft MoviconX (leider)

Danke
Oli


----------



## mike1908 (4 Juli 2011)

olitheis schrieb:


> Ich verwende "Postie" von infrading:
> http://www.infradig.com/.
> 
> Mit der Batch Datei rufe ich postie auf. In der Batch Datei stehen alle Infos, wie z.B. smtp, Absender, Empfänger, Betreff, Meldung usw... funktioniert prima. Ich habe es auch getestet mit Deinem Code.
> ...



Ein Klasse Tipp! Das werde ich direkt mal testen!


----------

