停止macros并closures工作簿如果打开为只读?

我已经制定了一个macros,将打开一些其他工作簿,刷新数据,然后保存和closures。 但是,如果正在添加数据,正在打开的图书有时可能被另一个部门使用。 有没有办法让macros终止,并closures工作簿,如果它被打开为只读?

问题是macros试图保存时遇到只读错误。

Sub Refresh_All() ' ' Refresh_All Macro ' ' Keyboard Shortcut: Ctrl+Y ' ChDir "Q:\Quality Control" Workbooks.Open Filename:= _ "Q:\Quality Control\Internal Failure Log - Variable Month.xlsm" Dim endTime As Date endTime = DateAdd("s", 10, Now()) Do While Now() < endTime DoEvents Loop ActiveWorkbook.RefreshAll endTime = DateAdd("s", 10, Now()) Do While Now() < endTime DoEvents Loop ActiveWorkbook.Save endTime = DateAdd("s", 5, Now()) Do While Now() < endTime DoEvents Loop ActiveWindow.Close ChDir "Q:\Reports" Workbooks.Open Filename:= _ "Q:\Reports\Finished-Transfer Report-variable month.xlsm" endTime = DateAdd("s", 10, Now()) Do While Now() < endTime DoEvents Loop ActiveWorkbook.RefreshAll endTime = DateAdd("s", 10, Now()) Do While Now() < endTime DoEvents Loop ActiveWorkbook.Save endTime = DateAdd("s", 5, Now()) Do While Now() < endTime DoEvents Loop ActiveWindow.Close ActiveWorkbook.RefreshAll endTime = DateAdd("s", 10, Now()) Do While Now() < endTime DoEvents Loop ActiveWorkbook.Save End Sub 

您可以使用属性Workbook.ReadOnly来testing工作簿是否只读。

 If ActiveWorkbook.ReadOnly Then <your code here> End If 

Workbook.ReadOnly描述: https : //msdn.microsoft.com/en-us/library/office/ff840925.aspx