我正在使用以下代码片段来保存电子表格,并将其设置为仅值并重新保存。但是,工作簿打开然后宏停止运行。为什么新的工作簿打开时宏停止运行?
这是为什么?我该如何阻止它?我试过设置ScreenUpdating = False
无济于事。
Sub saveReport()
Dim nwkbk As Workbook
Dim thsWkbk As Workbook
Set thsWkbk = ThisWorkbook
nwkbkPath = thsWkbk.Path & "\x. Archive\" & Format(Date, "YYYY-MM-DD - ") & thsWkbk.Name
ApplicationDisplayAlerts = False
thsWkbk.SaveCopyAs nwkbkPath
Set nwkbk = Workbooks.Open(nwkbkPath, False)
For w = 1 To nwkbk.Sheets.Count
nwkbk.Sheets(w).UsedRange = nwkbk.Sheets(w).UsedRange.Value
Next w
For wsp = 1 To nwkbk.Sheets.Count
nwkbk.Sheets(wsp).Protect Password:="SettleDownBenny"
Next wsp
Application.DisplayAlerts = False
nwkbk.Save
nwkbk.Close
End Sub
我认为你有一个错误的'nwkbkPath = thsWkbk.Path& “\ X档案\” &格式(Date “YYYY-MM-DD - ” )&thsWkbk.Name',你有一个文件夹“x。Archive”嵌套在这个Excel文件的当前路径下吗? –
在您的_original_工作簿中有一些事件处理程序吗?他们会被复制到新的工作簿中,并干扰正在运行的宏:尝试将其保存为普通的xlsx文件,因此没有宏存活 – user3598756
@ user3598756正确。我有一个AutoOpen方法,只要打开电子表格就会运行。好拿起。你如何保存副本,但选择格式?与VBA结合使用时,Excel的管理非常荒谬。 – AER