Office: (Office 2000) Funktion "Warten" unter VBA ?

Helfe beim Thema Funktion "Warten" unter VBA ? in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, folgende "Dinge" führe ich unter VBA aus: Packen einer Access-Datei mit Winzip und anschließendem automatischen Versand über Outlook. Leider... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von bmogck75, 13. Dezember 2004.

  1. Funktion "Warten" unter VBA ?


    Hallo,

    folgende "Dinge" führe ich unter VBA aus:

    Packen einer Access-Datei mit Winzip und anschließendem automatischen Versand über Outlook. Leider arbeitet Winzip teilweise zu langsam, dass die zu packende Datei noch nicht erstellt ist, aber Access bereits diese an Outlook übergeben will. Dann erscheint die Fehlermeldung "Kann Datei nicht finden".

    Gibt es einen Befehl, der den VBA-Code anweisen kann z.B. 3 Sekunden zu warten, und dann die weiteren Befehle auszuführen. (Habe hier im Forum gesucht, jedoch nichts passendes gefunden). Habe z. Zt das Problem mit HIlfe von 2 Buttons gelöst, die die einzelnen Befehle ausführen, jedoch ist das halt doppeltes Anklicken für eine Funktion.

    Danke für evtl. Hilfe.



    Hier der VBA-Code.

    On Error GoTo Err_Befeh25_Click

    Dim stDocName As String

    stDocName = "M_SchnittstelleHöftmannübergeben"
    DoCmd.RunMacro stDocName

    'nächstes

    Dim stAppName As String

    stAppName = "C:\Programme\WinZip\WINZIP32.EXE -min -a -ex c:\Eigene~1\schnittstellefuerhöftmannvonxyz.zip C:\Eigene~1\schnit~1.mdb"

    Hier müsste 2 Sekunden Wartezeit eingelegt werden
    Call Shell(stAppName, 1)

    dateien = "C:\eigene dateien\schnittstellefuerhöftmannvonxyz.zip"

    Set myolApp = CreateObject("Outlook.Application")

    SignatuR = "W. Trittel"

    strdatei = dateien

    Email = "test@test.com"

    Set myitem = myolApp.CreateItem(0)
    myitem.Recipients.Add Email

    myitem.Subject = "Neue Kundendienstdatei von Hr. Höftmann"

    myitem.Body = "Guten Tag, anbei erhalten Sie eine neue gepackte Datei." & vbCrLf & "Mit freundlichen Grüßen" & vbCrLf & vbCrLf & SignatuR 'Text"

    myitem.Attachments.Add strdatei 'Anhang

    'myitem.Display ' zeigt voher die Mail an
    myitem.Send 'sendet sie mail gleich.

    Kill "C:\eigene dateien\schnittstellefuerhöftmannvonxyz.zip"

    Exit_Befeh25_Click:
    Exit Sub

    Err_Befeh25_Click:
    MsgBox Err.Description
    Resume Exit_Befeh25_Click
    End Sub

    :)
     
    bmogck75, 13. Dezember 2004
    #1
  2. Hi,

    es gibt Befehle, um VBA-Code zu verzögern, aber einfacher und sicherer sollte die Dir()-Funktion in diesem Zusammenhang sein. Damit kannst du z.B. in einer Do Loop-Schleife überprüfen, ob eine bestimmte Datei existiert, und erst, wenn diese gefunden wird, weitermachen mit Exit Do.
    *wink.gif*
     
    genschman, 15. Dezember 2004
    #2
  3. Hi

    eine etwas umständliche Methode von genschmann, geht auch einfacher mit der API "sleep" , siehe hier

    wobei man sich dann noch fragen muss, was denn das Makro (igittigitt - siehe
     
  4. Funktion "Warten" unter VBA ?

    Hi,

    wieso umständlich?
    Mit sleep oder dergleichen (Saschas Timer-Trick) hast Du IMHO das Problem, bei unterschiedlich schnellen Rechnern/Laufwerken einen "Overhead" zu erzeugen. Auf dem einen PC dauert es 2 sec., auf dem anderen vielleicht 5 sec.
    Die Dir-Funktion liefert in dem Moment, wenn die Datei angelegt ist, den Namen und veranlaßt den Sprung aus der Schleife und die Weiterbearbeitung des Codes.
    *boah *entsetzt
     
    genschman, 15. Dezember 2004
    #4
  5. Hallo,

    danke für Eure Hilfe. Werde mal in diesem Forum bzw. der Onlinehilfe suchen wie ich die DIR-Funktion umsetzen kann.

    Ich arbeite überwiegend noch mit Makros, da ich finde, dass diese einfacher anzulegen sind. Die verwendete VBA-Befehle habe ich mir meist aus diesem Forum kopiert und dann für meine Arbeiten angepasst. Leider kenne ich mich zu wenig mit VBA aus. Habe mir zwar schon Fachbücher zugelegt (Access 2000 programmieren von Ralf Albrecht), jedoch sind diese meist für Anfänger auch relativ schwer zu erlernen.

    Gruß
    Benjamin
     
    bmogck75, 15. Dezember 2004
    #5
  6. Hallo,

    und warum rufst Du nicht erst den ZIP Code auf und dann den Sendcode?
    Somit geht es erst dann weiter wenn die eine Prozedur fertig ist.

    Gruß JuHu
     
  7. Juhuuuu ... Haaallooo

    er will ja genau vor dem Zippen 2 Sekunden warten. D.h. in dem Blackbox-Makro passiert irgendwas, das scheinbar zuerst fertig sein muss, bevor er zippen kann.
    Offenbar wird dort die zu zippende mdb erstellt oder gefüllt oder ??

    Ich sag ja auch, dass es wieder mal Symptom- statt Ursachenbekämpfung ist ...
     
  8. Funktion "Warten" unter VBA ?

    \@ JMC:
    das ist sicherlich ein Irrtum, ausgelöst dadurch, dass in dem Code die Zeile, wo die "Warteprozedur" ansetzen soll, um eine Zeile zu hoch markiert ist.
    Das Warten (wenn es denn gemacht werden soll), müsste nach dem Call Shell() kommen.
     
    genschman, 15. Dezember 2004
    #8
  9. Hallo,

    mache ich ja, bloß WINZIP startet im Hintergrund automatisch und der nächste Befehl (zum Versand) wird bereits ausgeführt bevor WINZIP mit dem Packen fertig ist. (Zeile ist in meinem ersten Beitrag verrutscht).

    Ich habe nach längerem Suchen in diesem Forum folgenden Befehl gefunden und dazwischen gepackt:

    Code:
    Es wird jetzt zwar der Benutzer aufgefordert auf "Ja" zu klicken, aber was besseres habe ich nicht hingekriegt bzw. gefunden.

    Kann man den erforderlichen Klick auf "Ja" noch umgehen ?

    Danke und Gruß
    Benjamin
     
    bmogck75, 15. Dezember 2004
    #9
  10. ...Fragwürdiger Code. (End sollte man lassen; Zeile Ende = Timer gibt keinen Sinn, ...)

    Ich würde sagen, genschman hat Recht. Das Warten auf die Datei per Dir() ist sicher die sinnvollste Lösung.
    (Ein Timer, ob mit Sleep oder sonst wie Timer, ist blöd, weil entweder zu lang oder zu kurz; eine API-Lösung, mit der auf Beenden von Winzip gewartet wird [WaitForSingleObject], ist ebenfalls nicht ganz astrein, weil z.B. unter W2000 zwischen dem Erstellen einer Datei und ihrer Verfügbarkeit für lesenden Zugriff ein kurzer Delay stattfindet, der seine Ursache möglicherweise im Berechtigungskatalog hat.)
    Also so:
    Code:
    Ciao, Sascha
     
    Sascha Trowitzsch, 15. Dezember 2004
    #10
  11. Ich habe irgenwann mal diesen code gefunden und hat auch super funktioniert.
    Vielleicht hilft's.
    Code:
     
    C. Palmetshofer, 15. Dezember 2004
    #11
  12. ...Das ist allerdings das, was ich mit WaitForSingleObject gemeint hab...
     
    Sascha Trowitzsch, 15. Dezember 2004
    #12
  13. Funktion "Warten" unter VBA ?

    Hallo,

    es gibt noch einen weiteren Ansatz. Ich hoffe, das ich jetzt nicht gegen Boardregelen verstosse.
    Es gibt die AP-Access-Tools CD Vol.1 (siehe oben im Formun), darin gibt es die sevzip32.dll.
    Damit kann man sehr elegant zippen und entzippen.
    Ich habe diese DLL im Einsatz und muss täglich Mails mit Zip Anhang versenden.
    Urteil: Einfach und sicher. Das Problem auf das warten habe ich nicht. Der weiterführende Code wird erst dann ausgeführt, wenn das zippen beendet ist.
    Gruß JuHu
     
  14. Sascha Trowitzsch, 16. Dezember 2004
    #14
Thema:

Funktion "Warten" unter VBA ?

Die Seite wird geladen...
  1. Funktion "Warten" unter VBA ? - Similar Threads - Funktion Warten VBA

  2. Probleme mit bedingter Formatierung

    in Microsoft Excel Hilfe
    Probleme mit bedingter Formatierung: Hallo ihr Lieben, folgende Herausforderung: Ich möchte die Formatierung des Wertes in B7 (bzw. auch alle weiteren Werte in Spalte B) nach folgenden Bedingungen anpassen: 1. WENN C7<0,05 DANN...
  3. neue Filter Funktion

    in Microsoft Excel Hilfe
    neue Filter Funktion: Hallo zusammen, wieder habe ich für meine Nebenkostenabrechnung (privat) ein paar Änderungen gemacht. Soweit so gut Nun habe ich , für mich, die neue Filter Funktion entdeckt. Wow ist richtig...
  4. Zahlenreihe addieren

    in Microsoft Excel Hilfe
    Zahlenreihe addieren: Hallo, ich habe folgende Zahlenreihe: -5; -9; -11; 35; -2; -4; -8; 33; -3; -6; -9 Jetzt würde ich gerne mit einer Funktion nur die Zahlen von rechts nach links, ab dem letzten Eintrag -9,...
  5. DropDown Auswahl mit 2 Funktionen

    in Microsoft Excel Hilfe
    DropDown Auswahl mit 2 Funktionen: Liebes Forum-Team, ich habe eine Tabelle mit Kundendaten, die von mehreren Mitarbeitern befüllt wird. Ich möchte, dass der Mitarbeiter seinen Namen im DropDown Auswahl auswählt, Aber im...
  6. ISOKalenderwoche Powerquery

    in Microsoft Excel Hilfe
    ISOKalenderwoche Powerquery: Hallo Ich möchte in einer Powerquery Abfrage in einer benutzerdefinierten Spalte die Kalenderwoche errechnen, nur schaffe ich das leider so überhaupt nicht. Als normale Excelformel kein Problem...
  7. Bei meinem Outlook (new) fehlen wichtige Funktionen!

    in Microsoft Outlook Hilfe
    Bei meinem Outlook (new) fehlen wichtige Funktionen!: Hallo, wie der Titel bereits andeutet, habe ich Probleme mit Outlook. Zum Beispiel ist es mir nicht möglich, Add-ins zu installieren. Es gibt keinen Button dafür, und auch wenn ich über die...
  8. Daten per Index-Funktion übertragen

    in Microsoft Excel Hilfe
    Daten per Index-Funktion übertragen: Hallo zusammen, ich stehe derzeit vor folgender Herausforderung: ich möchte Daten aus einer Martix per Index-Vergleich-Funktion in eine andere Matrix übertragen. Ich habe eine vereinfachte...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden