我正在尝试打开Excel工作簿并从Outlook运行宏。不幸的是,每当我打开工作簿时,它似乎默认为只读模式,这意味着我无法运行我想要的宏。
这是我的代码:
Sub runPat(client As String)
'Runs a PAT using tool with client as input
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
Dim sourceWB As Workbook
Dim usr As Worksheet
Dim strFile As String
Set xlApp = CreateObject("Excel.Application")
With xlApp
.Visible = True
.EnableEvents = False
End With
'Source file, will need to be changed if PAT is ever moved
strFile = "C:\Users\albio\Dropbox\Document Creation Program\Portfolio Analysis Tool\Portfolio Analysis tool v1.0.xlsm" 'PAT File path
'Open workbook
Set sourceWB = Workbooks.Open(strFile, , False)
'Run this PAT
sourceWB.Application.Run "buttons.launchButton"
End Sub
我尝试了各种解决方案,例如在打开文件路径之前设置IgnoreReadOnlyRecommended = True并使用setAttr到vbNormal。出于某种原因,它总是以只读模式打开,我看不出原因?
[编辑]工作簿通常在没有只读模式的情况下打开。只有在我的Outlook VbaProject中打开工作簿时才会启用只读。
答案 0 :(得分:0)
如果直接从excel打开工作簿,它将以只读模式打开,因为它不是受信任的文档。通常,如果单击启用宏,则下次将其添加为受信任文档。如果发生这种情况可能是因为可信文档已被禁用。
您可以通过导航到excel中的以下位置
来启用受信任的文档文件>选项>信托中心>信任中心设置>可信 文件
在这里,您需要取消选中“禁用受信任的文档”,甚至可以选中“允许网络上的文档受信任”
如果您尝试通过VBA代码打开excel文件,则需要在打开工作簿之前更改自动化安全性。例如
application.AutomationSecurity = msoAutomationSecurityLow
Workbooks.Open abc.xlsm
Application.AutomationSecurity = msoAutomationSecurityByUI 'Changes it back to the default value