如何禁用Excel工作表拖放到另一个Excel工作簿?

时间:2016-01-19 07:08:49

标签: vba excel-vba vsto excel

我为Excel 2010开发了VSTO加载项。我想禁用将Excel工作表拖动到另一个工作簿的功能。

我尝试按照应用程序事件进行一些解决方法:

Application_WorkbookActivate

Application_SheetActivate

Application_SheetChange

Application_WorkbookNewSheet

当一张工作簿从一个工作簿中删除时,我使用这些函数来捕获事件。创建到另一个工作簿。所以我试图以这种方式禁用拖动功能。

我也尝试了一个属性Application.CellDragAndDrop。但它只能禁用表格的单元格。

我尝试了一些使用功能区的场景,但我没有找到任何成功。

所以有人可以告诉我如何禁用将Excel工作表拖动到另一个工作簿。

1 个答案:

答案 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事件中编写此代码。