excel - 使用 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
解决方案
尽管 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
推荐阅读
- apache-spark - 可以在每个微批次中查找 Cassandra
- ibm-cloud - 用于发布和订阅主题的 IBM IOT 代码
- mysql - MYSQL - 如何用另一个表对应的行更新表的标题?
- c++ - 从 Qt 中的信号调用成员函数的问题
- java - 带有@ElementCollection 和@CollectionTable 的休眠实体。Hibernate 在检索集合时将属性名称添加到 SQL 语句
- ibm-watson - 如何在 NODEJS 应用程序上创建沃森助手意图的答案?
- java - 如果我在 Java 中使用带有 BufferedReader 的流式传输,是否有任何资源泄漏
- reactjs - 为什么我的组件没有收到更新的 Redux 状态?
- python - 如何停止 tensorflow 中的训练工作?
- python - 从子导入函数时导入错误,如果子已经从父导入