我为Excel 2010开发了VSTO加载项。我想禁用将Excel工作表拖动到另一个工作簿的功能。
我尝试按照应用程序事件进行一些解决方法:
Application_WorkbookActivate
Application_SheetActivate
Application_SheetChange
Application_WorkbookNewSheet
当一张工作簿从一个工作簿中删除时,我使用这些函数来捕获事件。创建到另一个工作簿。所以我试图以这种方式禁用拖动功能。
我也尝试了一个属性Application.CellDragAndDrop
。但它只能禁用表格的单元格。
我尝试了一些使用功能区的场景,但我没有找到任何成功。
所以有人可以告诉我如何禁用将Excel工作表拖动到另一个工作簿。
答案 0 :(得分:0)
我已经为此解决方案编写了一个解决方法。我也遵循了内森的建议。这是我的示例代码/逻辑。
If (Not IsSheetExists) Then
'bypass delete prompt
Application.DisplayAlerts = False
Sh.Copy(After:=OldActiveWorkbook.Worksheets(1))
Sh.Delete()
Application.DisplayAlerts = True
MessageBox.Show("We have blocked Drag-Drop functionality for security reasons.")
End If
示例代码中使用的变量:
IsSheetExists:检查我们正在拖动的工作表是否存在于新工作簿中。
OldActiveWorkbook:我们拖动工作表的工作簿。
我已在SheetActivate事件中编写此代码。