从SharePoint Online打开xlsm时Application.OnKey失效问题求助
背景与实现逻辑
- 使用
Application.OnKey拦截Ctrl+X(剪切)和Ctrl+V(粘贴)操作,提示用户需通过Ctrl+C复制后,用Ctrl+Alt+V打开「选择性粘贴」并选择「值」,以此避免全量粘贴带来的数据验证、格式异常问题 - 通过工作簿及工作表级事件调用
ToggleCut、TogglePaste过程,根据管理员登录状态、当前是否为名称以「User」开头的完全解锁工作表,传入布尔值控制剪切粘贴功能的启用/禁用
问题现象
- 本地存储打开xlsm文件时,快捷键能正确关联
NotifyFunctionDisabled并弹出提示,功能完全正常 - 从SharePoint Online文档库通过「在应用中打开」打开xlsm时,其他VBA代码均正常运行,但快捷键关联失效:按下
Ctrl+V时弹出报错:
无法运行宏"https://[SharePoint站点URL][文件路径][filename.xlsm]'!"。宏可能在此工作簿中不可用,或者所有宏均被禁用。
- 已在
Workbook_Open中设置断点单步执行,确认代码确实运行:
If blAdminModeEnabled Or Left$(wbThis.ActiveSheet.Name, 4) = "User" Then ToggleCut True TogglePaste True Else ToggleCut False TogglePaste False If .CutCopyMode = xlCut Then .CutCopyMode = False End If
关键代码片段
TogglePaste过程(NotifyFunctionDisabled仅根据传入字符串生成MsgBox提示):
Public Sub TogglePaste(ByVal blAllow As Boolean) Application.EnableCancelKey = xlDisabled Dim strFunction As String strFunction = "Paste" With Application Select Case blAllow Case Is = False .OnKey "^v", "'NotifyFunctionDisabled """ & strFunction & """'" .OnKey "+{INSERT}", "'NotifyFunctionDisabled """ & strFunction & """'" Case Is = True .OnKey "^v" .OnKey "+{INSERT}" End Select End With End Sub
求助
是否有人遇到过该问题?有没有可行的解决办法,或是这属于MS365的已知Bug?
内容的提问来源于stack exchange,提问作者Vince Hardwick
相关产品推荐
相关产品推荐

