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.
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
imThisOutlookSesion
. 3. In der Ereignisif 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 😀
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchte & Getestet!
Vorausgesetzt, Sie haben die Outlook-Anwendung immer läuft (laut Kommentar unter deiner Frage), die Sie tun können, was Sie brauchen in den folgenden Schritten:
fügen Sie eine neue Aufgabe in Outlook, Satz-Thema auf: "makro ausführen YourMacroName" und stellen Sie die Zeit (plus-Zyklen), wenn das makro starten soll.
gehen Sie zum VBA-Editor öffnen
ThisOutlookSession module
und fügen Sie den folgenden code innerhalb (plus siehe Kommentare im code):Weder. Fügen Sie den folgenden code in eine Textdatei und speichern Sie es als eine
.VBS
- Datei. Dann rufen Sie diese VBS-Datei aus dem Task Scheduler wie gezeigt HIERcall
ist nicht möglich?Outlook
ist, dass die Sicherheits-pop-up beim senden einer Nachricht ausgelöst wurde, von einem anderen Programm. Aus Neugier, ich dachte, dass das, was ist, wenn ich nur die Prozedur aufrufen und dieOutlook
noch sendet die E-mail, wird das pop-up noch auslösen? Oben funktioniert, aber das senden der E-mail war noch, ausgelöst durchanother
Programm. also das pop-up immer noch angezeigt.ThisOutlookSession
. Sobald Sie das tun, dann können Sie nennen das makro in outlook mitApplication.SendMail
. Aber diese Technik scheint nicht unterstützt außerhalb von Outlook VBA. Erforschen mehr...Application.ProcedureName
Werke inOutlook
während es nicht inExcel Vba
oderVBScript
. Nicht dieSet
bedecken Sie es, vorbei an derOutlook
application-Objekt?Wenn Sie Outlook Office '07 oder neuer den ich gefunden haben, können Sie leicht beheben, die Sicherheit pop-up Sie bereits erwähnt, wenn Sie Ihr Skript, indem Sie Folgendes tun:
1) In Outlook 2007 Vertrauensstellungscenter, gehen Sie zu Makro-Sicherheit - Wählen Sie "Keine Sicherheitsüberprüfung für Makros"
2) In Outlook 2007 Vertrauensstellungscenter, gehen Sie zu Programatic Zugriff - Wählen Sie "Nie warnen, abous verdächtige Aktivitäten.
Natürlich, dass technisch lässt Sie offen, um die remote-Möglichkeit für jemanden, der E-Mail Sie einige bösartige E-Mail-Skript oder etwas in der Natur, nehme ich an. Ich vertraue meiner Firma hat es geschafft, dass, obwohl, und das funktioniert für mich. Ich kann verwenden Sie VBS-Skripts in Outlook, Access, Excel, E-Mails versenden mit Sicherheit nicht pop-up.
Andere Möglichkeit:
Wenn Sie nicht möchten, dass zu tun, ist eine weitere option, die gut funktioniert hat für mich vor, das ist hier:
http://www.dimastr.com/redemption/objects.htm
Im Grunde eine dll-Umleitung, die nicht das popup. Es lässt Ihre anderen Standard-Sicherheit im Ort und Sie schreiben \ rufen Sie Ihren VBA für es und sned mail ohne die secutity pop-ups.