我有一个代码,当我打开模板工作簿(template.xlsm)(在 Workbook_Open 事件上触发)时,它会打开另一个工作簿(source.xlsx) 。
代码:
Private Sub Workbook_Open()
Application.Screenupdating= False
Set w = workbooks
w.open filename:="link", Updatelinks:=true , readonly:=true
activewindow.visible=false
thisworkbook.activate
application.screenupdating=True
end sub
但是,我希望源工作簿在打开时仅在后台运行,而在关闭模板文件时将其关闭。
Private sub workbook_aftersave()
Workbook("source.xlsx").Close SaveChanges:=False
End Sub
答案 0 :(得分:1)
您想使用Workbooks
集合(Workbooks("source.xlsx")
),而不是Workbook
对象(Workbook("source.xlsx")
,这会引发错误)。另外,您可以尝试使用Workbook_AfterSave
事件,而不是尝试在Workbook_BeforeClose
事件上将其关闭:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next 'In case the Workbook is already closed
Workbooks("source.xlsx").Close SaveChanges:=False
End Sub
{EDIT} 而且,因为我可以,这也是您的Workbook_Open
代码的整理版本:
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Dim wsSource As Workbook
Set wsSource = Workbooks.Open(Filename:="SomeDirectory\source.xlsx", UpdateLinks:=True, ReadOnly:=True) 'Change the filename to where your "source.xlsx" is stored
DoEvents 'Wait for it to finish opening
wsSource.Windows(1).Visible = False
ThisWorkbook.Activate
Application.ScreenUpdating = True
End Sub
答案 1 :(得分:-1)
尝试使用
Application.Visible = False
将其放置在要隐藏的工作簿上的Workbook_Open代码中,然后使用True将其重新关闭。