Rufen Sie Outlook VBScript-Prozedur mit

Ich habe eine Prozedur in Outlook sendet alle gespeicherten Nachrichten in Drafts Ordner.

Unten ist der code:

Public Sub SendMail()

Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim olDraft As Outlook.MAPIFolder
Dim strfoldername As String
Dim i As Integer

Set olApp = Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
Set olFolder = olNS.GetDefaultFolder(olFolderInbox)

strfoldername = olFolder.Parent

Set olDraft = olNS.Folders(strfoldername).Folders("Drafts")

If olDraft.Items.Count <> 0 Then
    For i = olDraft.Items.Count To 1 Step -1
        olDraft.Items.Item(i).Send
    Next
End If

End Sub

Obige code funktioniert einwandfrei.

Frage:

Möchte ich Task Scheduler Feuer dieses Verfahren als einen angegebenen Zeitraum.

1. Wo werde ich die Prozedur in Outlook-Modul ThisOutlookSession oder?

2. Ich bin nicht gut in vbscript also ich weiß auch nicht, wie es code zum aufrufen der Outlook-Verfahren. Ich habe getan, aufrufen von Excel-Prozedur wird aber von Outlook nicht unterstützt .Run Eigenschaft.

So funktioniert das nicht:

Dim olApp

Set olApp = CreateObject("Outlook.Application")
olApp.Run "ProcedureName"

Set olApp = Nothing

Habe ich auch gelesen über die Session.Logon wie diese:

Dim olApp

Set olApp = CreateObject("Outlook.Application")
olApp.Session.Logon
olApp.ProcedureName

Set olApp = Nothing

Aber es wirft die Fehlermeldung besagt, dass das Objekt ProcedureName wird nicht unterstützt.

Hoffe, jemand kann etwas Licht.

LÖSUNG:

Ok, ich habe herausgefunden, 2 umgehen, zu Vermeiden oder pass erhalten dieses pop-up.

Rufen Sie Outlook VBScript-Prozedur mit

1st one: ist als KazJaw Hingewiesen.

Vorausgesetzt, Sie haben ein anderes Programm (zB. Excel, VBScript), die das senden von E-mail über Outlook im Verfahren.

Anstelle der Verwendung von .Send nur .Save die E-mail.

Es wird gespeichert werden, in der Outlook's Draft Ordner.

Dann verwenden Sie folgenden code, senden den Entwurf, die feuert mit Outlook Task Reminder.

Option Explicit
Private WithEvents my_reminder As Outlook.Reminders

Private Sub Application_Reminder(ByVal Item As Object)

Dim myitem As TaskItem

If Item.Class = olTask Then 'This works the same as the next line but i prefer it since it automatically provides you the different item classes.
'If TypeName(Item) = "TaskItem" Then
    Set my_reminder = Outlook.Reminders
    Set myitem = Item
    If myitem.Subject = "Send Draft" Then
        Call SendMail
    End If
End If

End Sub

Private Sub my_reminder_BeforeReminderShow(Cancel As Boolean)

Cancel = True
Set my_reminder = Nothing

End Sub

Obigen code wird ausgelöst, wenn Task Reminder zeigt mit dem Betreff "Senden " Entwurf".

Aber, wir wollen es nicht zeigen, da der ganze Sinn ist nur zum aufrufen der SendMail Verfahren.

So fügten wir ein Verfahren, das Cancels die Anzeige und Mahnung, die von olTask Klasse oder TaskItem Typ.

Dies erfordert, dass Outlook läuft natürlich.

Sie können halten Sie es 24 Stunden laufen haben wie ich, oder erstellen Sie eine VBscript öffnet es geplanten über Task Scheduler.

2: ist die API verwenden, um programmgesteuert klicken Sie auf Zulassen - Taste, wenn das Sicherheits-pop-up angezeigt wird.

Credits SiddarthRout für die Hilfe.

Hier ist die LINK die Ihnen helfen, programmgesteuert klicken Sie auf Zulassen - Taste.

Natürlich müssen Sie zwicken Sie ein wenig.

  • Ich sehe Sid ' s Antwort unten, und Sie Diskussion unter. Hast du folgende Schritte beachten, tun die Aufgabe: 1. verwenden Sie das Fenster task-scheduler zum ausführen von Outlook (nur Outlook.Exe nicht VBScript-Datei). Ich denke, dies würde möglich sein, in Ihrem Betriebssystem. 2. Verwenden Private Sub Application_Startup() event im ThisOutlookSesion. 3. In der Ereignis if statement sich auf die Zeit beziehen, wenn das makro starten soll. Call YourMacro im inneren bedingten Anweisung. Fazit: Wenn Schritt 1 ausgeführt zu bestimmter Zeit, die geprüft wird, in Schritt 3, ich denke, Sie bekommen, was Sie brauchen.
  • vielen Dank für die Zeit nehmen. Aber dies ist nicht möglich, da ich die anderen tasks, die erfordert OL zu laufen immer. aber ich werde überprüfen, wenn ich kann ein timing.
  • bedeutet es, dass du deine OL-Anwendung (fast) immer ausgeführt wird? dann könnte man (eventuell) verwenden Sie Outlook-Aufgabe, die Arbeit zu tun (nicht Windows-System-task).
  • ja, immer läuft. und ja nie ausprobiert 😀
InformationsquelleAutor L42 | 2014-01-17
Schreibe einen Kommentar