首页 > 解决方案 > 使用 VBA 在 Outlook 中添加文件作为附件时,如何使打开的文件夹对话框窗口成为活动窗口?

问题描述

好的,所以我有工作代码,但是用于添加文件的浏览器显示在后台。这不会那么糟糕,但是当这种情况发生时它会冻结前景,使其难以快速获得。

我试图弄清楚如何让弹出式浏览器显示在所有内容之上,这样它就不会被掩埋。它也非常慢,所以如果有更有效的方法,那也很棒。这是我到目前为止所拥有的。

Option Explicit
Private Sub AttachmentFile()
Dim oLook As Object
Dim oMail As Object
Dim FD As Object
Dim vrtSelectedItem As Variant

    Set oLook = CreateObject("Outlook.Application")
    Set oMail = oLook.CreateItem(0)
    Set FD = Excel.Application.FileDialog(3)

    With oMail

            FD.AllowMultiSelect = True
            FD.Filters.Clear
            FD.Filters.Add "All Files", "*.*"
            FD.InitialFileName = "\\ad\dfs\Shared Data\"

            If FD.Show = True Then
                  For Each vrtSelectedItem In FD.SelectedItems
                  .Attachments.Add vrtSelectedItem
                    Next
            End If
            .Display
    End With
    Set FD = Nothing
    Set oMail = Nothing
    Set oLook = Nothing

End Sub

标签: excelvbaoutlook

解决方案


尽管 Outlook 中没有FileDialog对象,但您可以使用 模拟按下按钮ExecuteMso

要打开 Outlook 插入文件对话框,请按 AttachFile 按钮:

Private Sub ExecuteMso_AttachFile()

    Dim currItem As Object

    On Error Resume Next
    Set currItem = ActiveInspector.currentItem
    On Error GoTo 0

    If currItem Is Nothing Then Set currItem = CreateItem(olMailItem)

    currItem.Display

    ' Hover over the icon that you would add as a button
    ' The IdMso to use in ExecuteMso is the last part of the text displayed.
    ActiveInspector.CommandBars.ExecuteMso ("AttachFile")

End Sub

推荐阅读