Forum Discussion
Regression: File hyperlinks with #Bookmark no longer work in Office 2601/2602
After updating to Office Version 2601/2602 (Current Channel / Current Channel Preview), file‑based hyperlinks that include a bookmark (e.g., C:\File.docx#Bookmark) no longer work.
Office now rewrites the # as %23 and hands the link off to the default browser, which fails. This affects Excel, Word, PowerPoint, and Project. Rolling back to Version 2409 immediately restores correct behavior.
I previously had a build newer than 2409 that supported both working file‑bookmark hyperlinks and Excel’s cell‑level dark mode, so this appears to be a regression introduced in the 2601+ hyperlink resolver rather than a local configuration issue.
If anyone else is seeing this behavior, please upvote or comment so the engineering team can prioritize it.
As noted, it is not just Excel, but that is the most pressing need for me.
2 Replies
- joShu001Copper Contributor
Super-helpful explanation and excellent suggestions, thank you.
I have thousands of these bookmark links throughout my system, it's a quasi-magical time-saving power-feature, so I appreciate the options you provided for me to explore.
And now I also have some possible insight as to why OneNote has (frustratingly) never honored local #bookmark links.
Lastly, nice Banksy icon.
- NikolinoDEPlatinum Contributor
This is a confirmed regression that has been affecting users on the Current Channel (Preview) specifically around builds 16.0.17425.20000 (Version 2502) and later, persisting into the 2601/2602 builds you mentioned.
You are absolutely correct about the mechanism: Office is now aggressively enforcing RFC 3986 (URI Generic Syntax) standards where the hash/pound symbol (#) must be encoded as %23 in the URI path.
In previous versions (2409/2412), the Windows Shell handler for .docx/.xlsx was lenient. It would receive a string like C:\File.docx#Bookmark, see the #, and treat it as a "place" inside the file (OLE/COM navigation).
In Version 2601+, the internal Hlink.dll or the URI handler is normalizing the path before passing it to the OS.
- Input: C:\File.docx#Bookmark
- Normalization: file:///C:/File.docx%23Bookmark
- Handoff: Excel passes this encoded URI to the default browser (Edge/Chrome) or the Shell.
- Failure: The browser sees %23 and looks for a file literally named File.docx#Bookmark (where # is a valid filename character) or fails because it cannot access local file:// paths with encoded fragments correctly. The native app (WinWord.exe) never gets the command line argument in a format it recognizes as a bookmark.
The "Insert > Link" Manual Fix
Instead of pasting the link, use the Insert Hyperlink dialog:
- Select the cell.
- Insert > Link > Place in this Document (for internal) or Existing File or Web Page (for external).
- Crucial Step: In the "Address" bar at the bottom, manually type the # symbol. Do not copy-paste a URL-encoded string.
- If the file is local, Excel sometimes handles the "Address" box differently than a pasted hyperlink.
Registry "Legacy" Mode (Use with Caution)
There is a registry key that forces Office to use the older method of handling file URIs, though this is undocumented and may break other things.
- Open regedit.
- Navigate to HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\Internet.
- Create a new DWORD (32-bit) Value named ForceShellExecuteForFileLinks.
- Set the value to 1.
- Restart Excel.
Info about: This forces all file links to go through ShellExecute, which bypasses browser checks entirely. It usually fixes the # issue but might break "Open in Browser" features for SharePoint links.
The VBA "Shim" (Recommended for Power Users)
You can use a VBA macro to intercept hyperlink clicks, decode the %23 back to #, and launch the file using the Windows Shell API directly.
Paste this into a standard module in your Personal Macro Workbook (PERSONAL.XLSB):
' Force Excel to use ShellExecute instead of the broken internal resolver Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hWnd As LongPtr, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As LongPtr Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) Dim strPath As String strPath = Target.Address ' Check if it is a local file link with a bookmark issue If InStr(1, strPath, "%23", vbTextCompare) > 0 And Left(strPath, 2) <> "http" Then ' Replace encoded hash back to real hash strPath = Replace(strPath, "%23", "#") ' Cancel the default behavior (optional, prevents error noise) ' Note: This event is post-click, so we can't easily "cancel" the click, ' but we can immediately fix/retry the launch. ' Use ShellExecute to open the file natively ' SW_SHOWNORMAL = 1 ShellExecute 0, "Open", strPath, vbNullString, vbNullString, 1 End If End SubUntil they release a hotfix, the VBA workaround or staying on Version 2412 (Build 18324.20168) are your only stable options if dark mode is a requirement. Version 2412 is the last "sweet spot" build that has Dark Mode without the hyperlink regression.
I hope this information has been helpful to you.