Vba 如何在提交Word表单后添加成功消息?

Vba 如何在提交Word表单后添加成功消息?,vba,ms-word,Vba,Ms Word,我有一个Word表单,它被锁定,并且只有用户可以填写的字段。当它们到达终点时,有一个提交按钮,它是一个活动的x控件,代码如下: Private Sub CommandButton1_Click() Dim bStarted As Boolean Dim oOutlookApp As Outlook.Application Dim oItem As Outlook.MailItem On Error Resume Next If Len(ActiveDocument.Path) = 0 The

我有一个Word表单,它被锁定,并且只有用户可以填写的字段。当它们到达终点时,有一个提交按钮,它是一个活动的x控件,代码如下:

Private Sub CommandButton1_Click()
Dim bStarted As Boolean
Dim oOutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem

On Error Resume Next

If Len(ActiveDocument.Path) = 0 Then
     MsgBox "Document needs to be saved first"
     Exit Sub
End If

Set oOutlookApp = GetObject(, "Outlook.Application")
If Err <> 0 Then
     Set oOutlookApp = CreateObject("Outlook.Application")
     bStarted = True
End If

Set oItem = oOutlookApp.CreateItem(olMailItem)

With oItem
     .To = "email address"
     .Subject = "New subject"
     'Add the document as an attachment, you can use the .displayname property
     'to set the description that's used in the message
    .Attachments.Add Source:=ActiveDocument.FullName, Type:=olByValue, _
       DisplayName:="Document as attachment"
     .Send
End With

If bStarted Then
     oOutlookApp.Quit
End If

Set oItem = Nothing
Set oOutlookApp = Nothing

End Sub

我将Outlook库添加到引用中,因此当我单击按钮时,它会按预期发送电子邮件,并将Word文档作为附件。问题是没有消息告诉用户它已经工作了。我担心用户会一次又一次地点击按钮发送多封电子邮件。我通常不做VBA,但这对我当前的任务是必要的,所以任何帮助都将不胜感激

在我看来,在过程的末尾添加一行MsgBox应该可以完成这项工作。例如:

MsgBox "Document sent as e-mail"
如果愿意,您可以设置消息格式,如更改标题、按钮和图标。有关详细信息,请在VBA语言帮助中查找该方法

我还发现您的代码可能存在问题。在刚开始时,您有:

On Error Resume Next
这基本上关闭了所有错误-如果出现任何错误,将不会发出通知。这通常是一个非常糟糕的主意。如果使用,它应该只用于几行,然后恢复正常的错误通知或启用错误处理。我假设它最初出现在关于启动Outlook应用程序的代码中。那很好,这或多或少是标准的。。。但在结尾之后,如果您应该添加一行,例如:

On Error GoTo 0

在我看来,在过程的末尾添加一行MsgBox应该可以完成这项工作。例如:

MsgBox "Document sent as e-mail"
如果愿意,您可以设置消息格式,如更改标题、按钮和图标。有关详细信息,请在VBA语言帮助中查找该方法

我还发现您的代码可能存在问题。在刚开始时,您有:

On Error Resume Next
这基本上关闭了所有错误-如果出现任何错误,将不会发出通知。这通常是一个非常糟糕的主意。如果使用,它应该只用于几行,然后恢复正常的错误通知或启用错误处理。我假设它最初出现在关于启动Outlook应用程序的代码中。那很好,这或多或少是标准的。。。但在结尾之后,如果您应该添加一行,例如:

On Error GoTo 0

您可以添加在.send或ooutlookapp之后发送的msgboxMessage。退出

您可以添加在.send或ooutlookapp之后发送的msgboxMessage。退出

您的邮件发送的MsgBox怎么样?您的邮件发送的MsgBox怎么样?