Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
624to628
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
624to628
624to628
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datei erst öffnen, wenn im Verzeichnis vorhanden

Datei erst öffnen, wenn im Verzeichnis vorhanden
20.06.2005 11:05:48
Helmut
Hallo liebe Forenuser,
ich bräuchte wieder mal eure Hilfe. Es wäre toll, wenn mir jemand die Lösung schreiben könnte.
Prinzipiell:
Ich habe ein XML-File, das ich mit VBA öffne und aus dem ich dann etwas auslese (die Lösung dafür habe ich bereits hier im Forum bekommen).
Genauer:
Ein von mir erzeugtes XML-File (Test1.xml) landet im Verzeichnis E:\Test, nachdem ich auf einen Button in Excel gedrückt habe.
Dort wird es von einem Programm verarbeitet, das nach ca. 5 Sekunden (!!) aus meinem File ein 2. XML-File in dasselbe Verzeichnis generiert (Test_fertig.xml)!
Dieses 2. XML-File öffne ich nun und lese daraus einen Text aus.
Frage:
Ich habe ein Zeitversatzproblem!
Wie kann ich es mit einem Mausklick auf denselben Button in Excel schaffen, dass erst nachdem das generierte File (Test_fertig.xml) wirklich im Verzeichnis steht, es auch geöffnet wird?
BITTE UM GENAUE SKRIPTANGABE, da ich leider noch Anfänger bin.
Derzeit bekomme ich einen Laufzeitfehler, weil Excel das File öffnen möchte, dieses aber noch ein paar Sekunden benötigt, bis es ins Verzeichnis generiert wurde!
Ich muß auch garantieren, dass das File (hat immer denselben Namen Test_fertig.xml!) wirklich vorhanden ist.
Herzlichen Dank schon im Voraus mit der Bitte um Hilfe.
LG
Helmut

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei erst öffnen, wenn im Verzeichnis vorhanden
20.06.2005 11:55:55
MichaV
Hi Helmut,
versuch mal (2 x Dateinamen anpassen):


      
Private Sub WarteAufDatei()
Dim Start As Single
Const Zeit = 10 'Sekunden, die das Makro auf Datei warten soll

Start = Timer
While (Dir("e:\privat\test.xml") = "") And (Timer < (Start + Zeit))
  DoEvents
Wend
If Dir("e:\privat\test.xml") = "" Then
  MsgBox "Abbruch wg. Zeit"
Else
  MsgBox "Datei gefunden"
End If
End Sub 


Gruss- Micha
PS: mein Text-Finden-Makro hat noch einen kleinen Schönheitsfehler. Ich kann das leider nicht mher an den alten Threat schreiben, weil der schon im Archiv ist. Darum hier, um mein Gewissen zu beruhigen ;o) :
Derzeit sucht das Makro das Erste Auftreten von "TextDavor" und das erste Auftreten von TextDanach. Richtig ist natürlich, wenn das erste Auftreten von "TextDanach" NACH "TextDavor" gesucht wird. Das habe ich auch schon versucht einzubauen, es klappt aber nicht. Die richtige Zeile müsste heißen:
Mid(s, InStr(s, b) + Len(b), InStr(InStr(s, b) + 1, s, c) - InStr(s, b) - Len(b))
(eine +1 in der Mitte dazu)
Anzeige
Danke! Eine Frage noch!
21.06.2005 09:16:50
Helmut
Hallo Micha,
ich danke dir recht herzlich!! Dass du mir auch noch eine Korrektur vom "Text finden" schreibst finde ich ganz super von dir! Obwohl ich bis jetzt keinen Fehler beim Textauslesen bekam!? Danke, du bist ein VBA-Hit!! ;-))
Eine Frage noch:
Was mache ich, wenn der Timer irgendwann zu kurz ist. Ich möchte ja den Timer nicht so hoch setzen, dass es zu lange dauert. Zu kurz kann aber bedeuten, dass bei vielen Abarbeitungen durch das Programm auch erst ein paar Sekunden später ausgegeben wird. Dann bekomme ich einen Laufzeitfehler.
Danke sehr!
LG
Helmut
AW: Danke! Eine Frage noch!
21.06.2005 10:00:21
MichaV
Hallo Helmut,
also das mit dem Hit vergessen wir mal schnell lieber. Bin gestern wieder an der Formel verzweifelt, die ist immernoch nicht 100%ig universell einsetzbar. Aber wenns für Dich reicht, ist es ja okay.
Also die Warteschleife bricht ab, wenn die Datei gefunden wird oder wenn die Zeit rum ist. Wenn die Zeit rum ist und die Datei nicht gefunden wurde, dann kannst Du anstelle der MsgBox "Abbruch wg. Zeit" auch anders auswerten, mit einem Exit Sub, oder End, oder noch eine Warteschleife nach Benutzerabfrage oder oder. Da weiß ich nicht, was Du Dir da genau vorstellst. Aber eines geht ja nun mal nur, warten auf die Datei oder nach einiger Zeit abbrechen.
Klappt die Schleife so überhaupt bei Dir? Ich hab gestern nochmal drüber nachgedacht, es könnte ja sein, daß Dein Programm die Datei erstellt und dann danach noch damit arbeitet. Dann könnte Excel sie nicht öffnen, obwohl sie schon vorhanden ist. Wäre natürlich ein Problem.
Gruss- Micha
PS: Man kann natürlich eine Abbruch- Taste irgendwo einbauen. Das würde dann so ungefähr aussehen: Guckst Du: Abbrechen in Userform
Anzeige
Funkt. gut bis auf eine Kleinigkeit
21.06.2005 11:23:43
Helmut
Hallo Micha,
ja, bei mir funktioniert es recht gut! Das Programm arbeitet nach der Anlage in dem Verzeichnis nicht mehr damit; daher gibt es auch dadurch kein Problem!
Ich wußte nicht, dass dein Script auch arbeitet, wenn die Zeit überschritten wird! Habe es jetzt getestet und die Zeit auf 2 Sekunden herabgesetzt. In dieser Zeit ist die Datei aber sicher noch nicht da. Trotzdem bekam ich dann die Messagebox, dass er erfolgreich den Text ausgelesen hat. Er hat es auch wirklich getan; habe es kontrolliert.
Das vielleicht einzig Unschöne daran ist, dass ich bei einer kurzen Zeitkonstanten (wie z.B. 2 Sek.) auch zusätzlich die Fehlermeldung "Abbruch wg. Zeit" bekomme.
Aber wie gasagt, dahinter kommt auch die Meldung, dass er erfolgreich ausgelesen hat.
Also 2 Meldungen in so einem Fall.
Ich werde die Zeitkonstante einfach hinaufsetzen auf 6 oder 7 Sekunden; so wie ich dich verstanden habe, liest dein Script ja auch schon aus, wenn die Datei nach z.B.
3 Sekunden da wäre und wartet nicht wirklich die ganzen 6 oder 7 Sekunden, oder?
Ein wirklicher Fehler wäre ja nur dann, wenn nach Überschreiten der Zeitkonstanten keine Datei im Verzeichnis wäre.
Danke nochmals, und:
Du bist schon sehr gut, denke ich, denn mir wird bei den Befehlen "schwindelig". Habe in der Hilfe nachgesehen. Das muß man auch erst mal alles wissen mit z.B. "DoEvents" usw.
Ciao,
Helmut
Anzeige
AW: Funkt. gut bis auf eine Kleinigkeit
21.06.2005 11:47:20
MichaV
Hallo Helmut,
also mein Script liest mit Sicherheit keine Daten aus Dateien, die nicht da sind...
Entweder, sie wird nach 2,1 Sekunden dann doch erstellt oder es greift nicht auf die Datei zu, die Du meinst.

While (Dir("e:\privat\test.xml") = "") And (Timer < (Start + Zeit))
DoEvents
Wend

Heißt: Solange, wie die Datei nicht gefunden wird UND wie die 10 Sekunden noch nicht rum sind: lass den Rechner seine anderen Aufgaben erledigen.
Wenn eine Bedingung nicht mehr erfüllt ist, also wenn die Datei gefunden wird ODER die 10 Sekunden rum sind, wird die Schleife verlassen.
Gruss- Micha
Anzeige
AW: Funkt. gut bis auf eine Kleinigkeit
21.06.2005 12:15:29
Helmut
Hi Micha,
danke dir! Kenne mich jetzt so halbwegs aus!
Frage:
Die
Timer-Bedingung Timer kleiner(Start + Zeit)
bedeutet, dass, wenn ich z.B. die Konstante Zeit auf 10 Sek. setze und der Timer ist gerade bei 4 Sek. UND die Datei ist da, die Schleife verlassen wird, oder?
Ciao,
Helmut
AW: Funkt. gut bis auf eine Kleinigkeit
21.06.2005 12:38:33
MichaV
Hi Helmut,
ja. Wenn eine Bedingung nicht mehr erfüllt ist, also wenn die Datei gefunden wird ODER die 10 Sekunden rum sind, wird die Schleife verlassen.
Gruss- Micha
AW: Funkt. gut bis auf eine Kleinigkeit
21.06.2005 13:10:41
Helmut
Hi Micha,
DANKE! Schönen Tag noch.
Ciao,
Helmut

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige