我用的是Office365。我有一个名为 Test.xlsm 的 Excel 文件,其中包含一个名为 frmMain 的用户窗体。
在 ThisWorkbook 对象和 Workbook_Open 事件中,我有以下代码:
Private Sub Workbook_Open()
Worksheets("Main").Activate
frmMain.Show
End Sub
Run Code Online (Sandbox Code Playgroud)
它旨在每次打开 Test.xlsm 文件时启动(显示)frmMain 用户窗体。
但是,如果另一个 Excel 或 Word 文件已打开,则 frmMain 用户窗体无法启动/显示。
有没有办法让 Excel 或 Word 文件已打开,并且仍然能够启动和使用 Test.xlsm 文件及其用户窗体 frmMain ?这是Office365的问题吗?
更新:
还尝试将应用程序安全性设置为低,以防默认为 msoAutomationSecurityByUI:
Private Sub Workbook_Open()
dim frm As frmMain
Dim secAutomation As MsoAutomationSecurity
set frm = New frmMain
secAutomation = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityLow
Worksheets("Main").Activate
frmMain.Show
End Sub
Run Code Online (Sandbox Code Playgroud)
更新:
还尝试将其放在独立模块上(不在 ThisWorkbook 中):
Private Sub runForm()
frmMain.Show
End Sub
Run Code Online (Sandbox Code Playgroud)
然后从 ThisWorkbook …
考虑以下代码:
using Microsoft.Office.Interop.Outlook;
using OutlookApp = Microsoft.Office.Interop.Outlook.Application;
namespace OutlookInterop
{
class Program
{
static void Main(string[] args)
{
OutlookApp outlookApp = new OutlookApp();
MailItem mailItem = outlookApp.CreateItem(OlItemType.olMailItem);
mailItem.To = "test@test.com";
mailItem.Subject = "Test Email Alert";
mailItem.HTMLBody = "<html><body>Test email body.</body></html>";
mailItem.Display(false);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我在Visual Studio上运行该代码时,它运行良好,但是在BluePrism中使用它时,出现以下编译器错误:
Page: Send Email Alert c#
Stage: Code1
Type: Error
Action: Validate
Description: Compiler error at line 2: Cannot implicitly convert type 'object' to 'Microsoft.Office.Interop.Outlook.MailItem'. An explicit conversion exists (are you missing a cast?)
Repairable: …Run Code Online (Sandbox Code Playgroud)