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

时间:2015-12-04 15:50:21

标签: 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 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,但这对我目前的任务来说是必要的,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:5)

在我看来,在程序结束时添加一个MsgBox行应该可以完成这项工作。例如:

MsgBox "Document sent as e-mail"

如果您愿意,您可以格式化消息,例如更改标题,按钮和图标。在VBA语言帮助中查找方法以获取更多信息。

我也发现您的代码可能存在问题。在一开始你就有:

On Error Resume Next

这基本上会关闭所有错误 - 如果出现任何问题,将不会发出任何通知。这通常是一个非常糟糕的想法。如果使用它,它应该只有几行,然后你要么恢复正常的错误通知,要么打开错误处理。我假设它最初在您的代码中有关启动Outlook应用程序的部分。那很好,它或多或少标准......但是在结束之后如果你应该添加一行如下:

On Error GoTo 0

答案 1 :(得分:1)

您可以在.send之后或之后添加msgbox(“已发送消息”)ooutlookapp.quit