Ich legte Ihren Code in einen Codefehler und ein paar Fehler tauchte auf. Mach dir keine Sorgen. Sie sind einfach zu reparieren. Es sieht so aus, als wäre der ursprüngliche Code in einer Zeile in mehrere Zeilen aufgeteilt und kann nicht richtig gelesen werden. Versuchen Sie dies:
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private WithEvents Items As Outlook.Items
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
If MsgBox("Do you want to continue sending the mail?", vbOKCancel) <> vbOK Then
Cancel = True
End If
End Sub
Private Sub Application_Startup()
Dim Ns As Outlook.NameSpace
Dim Folder As Outlook.MAPIFolder
Set Ns = Application.GetNamespace("MAPI")
Set Folder = Ns.GetDefaultFolder(olFolderSentMail)
Set Items = Folder.Items
End Sub
Private Sub Items_ItemAdd(ByVal Item As Object)
If TypeOf Item Is Outlook.MailItem Then
If MsgBox("Print email?", vbYesNo Or vbQuestion) = vbYes _
Then
Item.PrintOut
End If
End If
End Sub
Und jetzt für die Erklärung. Die folgende von Ihrem ursprünglichen Code ist eigentlich 1 Codezeile:
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As
String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As
Long
Sie können über mehrere Zeilen mit einem Raum und einem Unterstrich am Ende einer Zeile eine lange Codezeile aufgeteilt. Es gab ein paar Bereiche wie diese, wo der Platz und die Unterstreichung fehlten. Sie können sie am Ende der Zeile hinzufügen oder den Text in eine Zeile verschieben. Ich habe ein wenig von beidem gemacht.
Das gleiche Problem ist hier passiert:
If MsgBox("Print email?", vbYesNo Or vbQuestion) = vbYes
Then
Diese eine Zeile Code sein muss. Also beide der folgenden funktionieren werden, aber die erste ist häufiger und als leichter zu lesen:
If MsgBox("Print email?", vbYesNo Or vbQuestion) = vbYes Then
..., die zu
If MsgBox("Print email?", vbYesNo Or vbQuestion) = vbYes _
Then
Schließlich identisch ist, die Teile, die nicht " Subs ", wie" Private Declare ... "und" Private WithEvents ... "müssen oben im Skript stehen, vor allem die Subs.
Welchen Fehler bekommen Sie? – ChrisB
Hallo Chris, ich bekomme einen Fehler, der Compile Error sagt: Erwartet: Typ Name. Ich bekomme den Fehler, wenn die Anwendung gestartet wird, und jedes Mal, wenn ich versuche, eine E-Mail danach zu senden. –
Hoffentlich funktionieren die Änderungen unten für Sie. Vergiss nicht, die Antwort zu akzeptieren, wenn es hilft. – ChrisB