Forum Discussion
Regression: File hyperlinks with #Bookmark no longer work in Office 2601/2602
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.