Forum Discussion
Can no longer refresh data in a Protected Workbook since Excel version 1803
- Jun 04, 2018
Hi there,
The fix was deployed for the following Office versions:
- Version 1803 (Build 9126.2196) and later
- Version 1804 (Build 9226.2135) and later
- Version 1805 (Build 9330.2017) and later
Hope this helps.
Guy.
- Excel Team
I have this same issue, the only work around I've come up with so far is to use a macro to run when the workbook is opened, unprotect the workbook, refresh the data (not in the background) and then lock the workbook. It's a pain in the arse since I have to change many different tools. Please roll this change back!
- Andrew NevardApr 13, 2018Copper Contributor
Yes this is a big problem.
My query is refreshed using VBA. I use a class object for the query so it can run in the background and trigger events. My workaround is to use the BeforeRefresh event to unlock the workbook, and the AfterRefresh event to lock it again. I have not tried to see if these events are triggered when a user selects Refresh All from the data ribbon.
Of course I do have to update all the workbooks that I have deployed!
- Brian McKayApr 11, 2018Copper Contributor
Hey David,
Can you share your macro? I don't think it'd work for my situation but it might help others in the same pickle.
- David BranderApr 11, 2018Brass Contributor
Hi Brian,
Sure, happy to. I'm no Excel expert but put this together this afternoon. Use at your own risk.Add this to the workbook macro section:
Private Sub Workbook_Open() Call RefreshQuery End Sub
Add this to a module:
Sub RefreshQuery() ThisWorkbook.Unprotect strAdminPassword Application.EnableEvents = False 'This value check looks at a formula I have in the workbook. if you haven't refreshed within a week you get a 1 If Range("SECTOR!B33") = 1 Then StartTime = Time ' Show 'Updating..'-message Not sure if the timer is needed any more, it was legacy from something else but it works with it, so hey if it ain't broke... ActiveSheet.Shapes.Range(Array("Rectangle: Rounded Corners 1")).Visible = True nSec = 0.1 + Timer While nSec > Timer DoEvents Wend 'Change "Connection" to the connection name you have. ActiveWorkbook.Connections("Connection").Refresh ' Remove 'Updating..'-message ActiveSheet.Shapes.Range(Array("Rounded Rectangle 1")).Visible = False nSec = 0.1 + Timer While nSec > Timer DoEvents Wend End If 'This section below is more specific to my use case - so I track when this was last refreshed, if it's older than a week I'll force the user to refresh to continue to use the workbook. Dim cell As Range Dim rng As Range Dim RangeName As String Dim CellName As String 'Single Cell Reference (Workbook Scope) RangeName = "REFRESH_DATE" CellName = "O1" Set cell = Worksheets("UCON Pricing Tool (2016)").Range(CellName) ThisWorkbook.Names.Add Name:=RangeName, RefersTo:=cell Range("REFRESH_DATE").Value = Date Range("REFRESH_DATE").NumberFormat = "dd/mm/yyyy" Application.EnableEvents = True ThisWorkbook.Unprotect strAdminPassword End Sub
You may need to edit the code to get what you want from it, but it's a base. I am still testing this with my workbooks so it may not be final. Effectively, use at your own risk/understanding. It may work for you, it may not. Currently, it seems to work for me but it's a pain in the arse of a workaround.
You'll need to disable background refresh for your connection, and disable refresh on opening.
David- Petr PotociarApr 16, 2018Copper Contributor
Thank you David very much for the macro, it works again!
I encountered the same problem, my excel needs to download exchange rates and needs to be protected. Since update I can no longer have the workbook protected and refresh connections.
When using macro to refresh connections, it is necessary to disable refresh of connection on the background and to disable refresh of connection when opening the workbook, otherwise macro locks the workbook before connection is updated / shows message, that the workbook is protected and cannot be changed.
Anyway I would appreciate solution from Microsoft and if possible - without necessity to use macros at all. The last update is a real pain in the arse.
- Marcel PayensApr 11, 2018Copper Contributor
Be aware, with a macro solution, that you may have to remove all checkboxes for 'refresh automatically when cell value changes ' for all queries in your workbook, and to refresh these queries with a command well from your macro. Similarly you will need to disable 'Refresh data when opening the file' and possibly also for background refresh. It is really a pain.
- Marcel PayensApr 13, 2018Copper Contributor
All,
I think if we want Microsoft to move and take some action to correct this, we need a lot more complaints in this thread than those of the few poor souls that are here now, who actually understand what is wrong. Suggest to mobilize your customers / colleagues to join in here.