Macro läuft auf neuer exselversion nicht
#11
(11.09.2016, 19:10)RPP63 schrieb: Moin!
Nicht schlecht, Herr Specht:

Du machst mir Spaß!
Warum sollte ich mir ein MB-Monster herunterladen, wenn doch gerade der Shell-Befehl zur nicht vorhandenen .exe Deine Probleme verursacht?
Ich weiß nicht, wie der Ablauf in der .exe ist (sprich: selbstschließend?) und vor allem, warum VBA nicht auf die Beendigung wartet, deshalb ja auch der Tipp in meiner letzten Antwort.

Beim derzeitigen Stand nutzt mir die Datei wenig, aber vielleicht findet ja ein anderer den Stein des Weisen.

[off topic]
imo ist so etwas für einen Dienstleister, der sich die Situation "am offenen Herzen" anschauen kann.
[/off topic]

Gruß Ralf
Moin Ralf,

ich weiß nicht wie ich es sonst beschreiben soll. Was benötigst Du ??

Gruß Hagen
Top
#12
Ich zitiere noch mal die Thread-Eröffnung, Hagen:
Zitat:Der Button startet eine exe. dem Surftest 400. Soweit funktioniert auch alles. Aber wenn ich die Exsel schliese oder eine neue messung machen möchte kann das Makro die exe nicht mehr schliessen. Das beteute ich muss erst im Taskmanager den Prozess händisch schliessen um eine weiter Messung durchzu führen.
In der Regel wartet VBA erst ab, ob ein Befehl abgeschlossen ist.
Die Shell-Funktion startet jedoch etwas, was NICHTS mit VBA zu tun hat.


Also scheint (aus welchen Gründen auch immer) die Shell (also Windows) langsamer zu sein als das "reine" VBA.
Deshalb mein (letztmaliger) Rat, den Wait-Parameter anzuwenden.

Melde Dich, wenn Du dieses mal ausprobiert hast.
Weiterhelfen kann ich Dir jedoch nicht, ohne die Internas zu kennen.
Und wie bereits gesagt:
Dies ist dann tatsächlich etwas für einen Dienstleister, der Zugriff auf sämtliche Ressourcen hat.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Hagen
Top
#13
Hallo Hagen,

Ralf und ich sind zwar keine Zwilinge aber trotzdem einer Meinung.
Wie sollen wir helfen einen Fehler abzustellen, auf den wir keinen Zugriff haben?
Das wird so nichts.
[-] Folgende(r) 1 Nutzer sagt Danke an Käpt'n Blaubär für diesen Beitrag:
  • Hagen
Top
#14
Hi

was passiert denn wenn diese Surftest.exe alleine (ohne Excel) aufgerufen wird? Ich denke mal es wird eine Verbindung zum Messgerät aufgebaut und dann die Messwerte in CSV Dateie(en) geschrieben? Danach sollte sich die Surftest wohl beenden, da im Excelmakro keine Auswertung irgendwelcher Daten erfolgt(nach Drücken des Button 1). Ich vermute mal dass die Datei auch ohne Aufruf aus Excel hängen bleibt. Ist das so?
[-] Folgende(r) 1 Nutzer sagt Danke an Winny für diesen Beitrag:
  • Hagen
Top
#15
(11.09.2016, 20:48)Winny schrieb: Hi

was passiert denn wenn diese Surftest.exe alleine (ohne Excel) aufgerufen wird? Ich denke mal es wird eine Verbindung zum Messgerät aufgebaut und dann die Messwerte in CSV Dateie(en) geschrieben? Danach sollte sich die Surftest wohl beenden, da im Excelmakro keine Auswertung irgendwelcher Daten erfolgt(nach Drücken des Button 1). Ich vermute mal dass die Datei auch ohne Aufruf aus Excel hängen bleibt. Ist das so?

Moin Winny,

habe jetzt die exe. ohne Excel gestartet. Das Problem ist das sich der Prozess nicht beendet wird selbst wenn amnn die exe. wieder schließt. Dadurch kann mann keine zweite Messung machen weil das Programm was Excel  sucht schon geöffnet ist. Schliest mann es händisch im Taskmanager ist alles wieder schön. Was kann ich tun ? Vieleicht am Anfang vom Makro sagen das dies exe. richtig geschlossen werden soll. Aber wie mach ich das ??

Gruß Hagen
Top
#16
Hi

wenn ich das jetzt richtig verstehe dann beendet sich die Surftest.exe ja auch nicht wenn sie manuell gestartet wird. Ich würde dann mal schauen dass ich ein Update davon bekomme, sollte doch bei Mitutoyo kein Problem sein. Evtl. gibt es auch ein Problem mit eurem Messgerät(Kommunikation mit Surftest.exe), das könnte nur ein Techniker sagen.

Mit Excel hat das m.E. gar nichts zu tun, so aus der Ferne...
[-] Folgende(r) 1 Nutzer sagt Danke an Winny für diesen Beitrag:
  • Hagen
Top
#17
(12.09.2016, 23:23)Winny schrieb: Hi

wenn ich das jetzt richtig verstehe dann beendet sich die Surftest.exe ja auch nicht wenn sie manuell gestartet wird. Ich würde dann mal schauen dass ich ein Update davon bekomme, sollte doch bei Mitutoyo kein Problem sein. Evtl. gibt es auch ein Problem mit eurem Messgerät(Kommunikation mit Surftest.exe), das könnte nur ein Techniker sagen.

Mit Excel hat das m.E. gar nichts zu tun, so aus der Ferne...

ja genau so ist es. Mitutoyo habe ich natürlich schon angerufen. Die tun sich sehr schwer damit. Die haben ein neues Gerät auf dem Markt und wollen dieses verkaufen und supporten die alte Software nicht mehr. Deswegen bin ich doch hier gelandet.

Gruß Hage
Top
#18
Hallo Hagen,

in einem neuen VBA-Modul steht das:
'http://visualbasic.ittoolbox.com/documents/closing-application-through-vba-event-12144
Public Function CloseExefile(AppNameOfExe As String)
 Dim oProcList As Object
 Dim oWMI As Object
 Dim oProc As Object
 
 ' step 1: create WMI object instance:
 Set oWMI = GetObject("winmgmts:")
 If IsNull(oWMI) = False Then
   ' step 2: create object collection of Win32 processes:
   Set oProcList = oWMI.InstancesOf("win32_process")
   ' step 3: iterate through the enumerated collection:
   For Each oProc In oProcList
     ' option to close a process:
     If UCase(oProc.Name) = UCase(AppNameOfExe) Then
       oProc.Terminate (0)
     End If 'IsNull(oWMI) = False
   Next oProc
 End If
End Function
Im schon vorhandenen Modul ThisWorkbook steht
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 CloseExefile "Surftest SJ400.exe"
End Sub
und hinter dem Button steht jetzt
'*****************************************************
'   ÃÞ°À“ǍžÀÞ²±Û¸Þ•\Ž¦i‹@Žíê—pSJ401j
'*****************************************************
Public Sub CommandButton1_Click()
   '•Ï”éŒ¾
   Dim strSurfPath As String
   word = Sheets("ej").Range("a1").Value
   
   If word = "eng" Then
       strSurfPath = ActiveWorkbook.Path & "\Surftest SJ400.exe"
   Else
       If word = "jpn" Then
       strSurfPath = ActiveWorkbook.Path & "\Surftest SJ400.exe"
       End If
   End If
   
   
   'AP‹N“®
   CloseExefile "Surftest SJ400.exe"
   Shell strSurfPath, vbNormalFocus
End Sub
Gruß Uwe


Angehängte Dateien
.xls   400Certificate_Kuwer2.xls (Größe: 1,52 MB / Downloads: 4)
Top
#19
Hallo Uwe,

vielen Dank, werde es morgen auf Arbeit testen.

Gruß Hagen
Top
#20
Hallo Uwe,

habe heute dein Excelblatt getestet. Es funktionert prächtig. Beim Start einer neuen Messung schließt das Macro die surftest.exe und eine neue Messung ist möglich ohne die exe. im Taskmanager händisch zu schließen. Ein kleinen Makel hat es aber noch. Da ich nach dem Messen zu erst den " Bericht erstellen " drücke zeigt mir Excel einen Laufzeitfehler an den ich einfach wegdrücke. Dies hat mit Sicherheit ( glaub ich jedenfalls ) was damit zu tun das surftest noch aktiv ist und sich beist. Kannst Du mir das Sheet so machen das auch bei drücken " Bericht erstellen " und " Export " zuerst die exe. schließen tut wie meim messen ??

Vielen Dank
Hagen
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste