So wie Du Dir das vorstellst wird es nach meiner Meinung nicht
gehen. Dazu müsstest Du Multithreading bemühen und das wäre
für diesen Zweck heftig übertrieben. Das geht mit VB.Net, mit
VB6 nur sehr umständlich, ist etwas für die ganz großen
Experten, mir zu hoch. Ob’s mit VBA überhaupt geht, weiß ich
nicht genau.
Hallo Rainer,
naja, wenn das z.B. in VB.Net geht, Aufwand jetzt mal weglassend, so wäre das zumindest ein Weg.
Dann bräuchte Stephan halt nur noch jmdn. der ihm das in VB.Net
programmiert, möglichst mit vielen Parametern beim .Net-.exe Start
bzw. Übergabe des Namens/Pfads einer von mir aus Textdatei
womit dann Stephan den genauen Ablauf der .exe „steuern“ kann
Natürlich interessiert mich so eine Anfrage, hab deshalb auch experimentiert Zum Testen hab ich dann u.a. sowas gebaut:
While 1
a=a+1
if a=1000000 then a=0
wend
Das ließ sich problemlos mit „Esc“ abbrechen.
@Stephan, „Esc“ stoppt auch deine Makros? WEnn ja wäre das gut.
Sicherheitshalber könntest du da beim Programmstart Enablecancelkey auf True setzen.
Wenn es manuell geht mit dem Abbruch so sehe ich da eine vage aber realistische Chance das auch automatisch nach Zeit x tun zu lassen durch ein anderes Makro.
Plan ist, Excel in zwei Instanzen zu öffnen. Aus der zweiten startest du deine Programme in der ersten.
Dann schickst du nach Zeit x per Sendkeys oder API-Sendkeys Esc an die erste Instanz.
Oder machst was besseres, Sendkeys ist immer Risko
Ist jetzt nur angedacht. Ich weiß das man auf eine andere Excelinstanz zugreifen kann per Code. Wie weiß ich grad nicht genau aber man kann sogar in der fremden Instanz/Mappe ein Makro starten
und dem Startparameter mitgeben.
Ergo auch ein Makro starten was Sendkeys veranlasst o.ä.
Aber ich befürchte wegen Nicht Multitasking würde das zwar klappen,
aber wenn überhaupt erst dann wenn die erste Instanz nicht mehr durch
deine eigentlichen Programme „belegt“ ist
Was natürlich garantiert geht ist die erste Instanz ganz abzuschießen.
Dafür brauchste nur API Findwindow, Postmessage, sendmessageu.ä.
Aber, dann isse weg, alle Änderungen in der Mappe sind natürlich auch futsch.
Also müßte man dann aus der zweiten Instanz heraus die Daten der Mappe der ersten Mappe rauskopieren und speichern bevor man die erste abschießt. Wie und ob das so möglich ist.
Ich denke da z.B. an Application.Screenupdating.
Stefan, irschendwie sehe ich es deutlich vor mir daß du doch deinen Code umschreiben mußt. Spontan gedacht müßte da doch eine Codezeile reichen die du überall an/in den richtigen Stellen pro Prozedur einfügst, sowas in etwa:
If ZeitAbgelaufen = True then exit function.
Gibt da aber zig Möglichkeiten.
Du siehst ja das Thema hat viele interessiert, darfst du den Code zeigen? Klar, wenn das ein Mammutprojekt ist wo die Byteanzahl
nur der Codezeilen größer ist als so manche kleine Exelmappe,
naja, sowas lese ich gerne, aber da überall was ändern, auweija
Aber den Code zu zeigen hat nix mit einer Lösung deiner Anfrage zu tun. Bei all meinen Recherchen/gedanken kristallisiert sich raus
daß zwei Dinge gehen. Die zeitlichen Abbruchbedingungen in die Prozeduren schreiben oder die Excelinstanz abschießen, letzteres hat halt Kollateralschäden.
Sorry.
Gruß
Reinhard