2012-08-03 46 views
1

有谁知道是否有办法保护图表名称,以便用户无法更改它?我有很多引用各种图表的代码。如果用户要更改一个或多个图表名称,事情会变得很匆忙。保护图表名称

+0

如果我没有错,那么你必须保护那张表 – 2012-08-03 05:40:01

+2

为什么不使用图表索引而不是名称。 – brettdj 2012-08-03 07:20:20

+0

@brettdj:好点!老实说,这甚至没有跨越我的想法:) – 2012-08-03 08:09:34

回答

1

我可能有一个解决方案,但它会带来一些开销。

您可以为每个正在使用的图表添加实际图表,并且希望在工作簿中具有名称保护功能。它们在工作簿中显示为单独的选项卡(如表格)。

看起来像在这里:

enter image description here

右键点击您的图表,选择,然后新表移动图表。这样,您将拥有“更好”的图表对象,您可以通过VBA或通过Ribbon-Menue单独保护图表对象,并且您有一个内部CodeName

喜欢这里:

enter image description here

与内部代号为您的用户的烦恼应该做的,因为他们可以说出他们是怎样想你也能做;)我不信任指数eighter并讨厌使用用户定义的名称 - 代码名称是最好的,除了在代码中处理,但这只是一个主要的vba缺陷。

我猜测,那些额外的图表会让您厌烦一点,所以只要让它们不可见并在表格中将它们的副本用作ChartObjects。

这应该是它。

此外,我偶然发现了一个有趣的事实,即你只能通过将它保护为受保护表中的嵌套对象来保护图表名。即使用我的尝试,用户也可以更改名称,除非使用它保护工作簿结构和所有表/图表名称。

希望这有助于;)

+0

有趣的想法。感谢你的想法。我从这个项目中转移了一下,并没有时间回到这个问题上。我感谢您花时间思考这个问题! – Alex 2012-10-11 03:53:21

0

尝试类似这样的代码。将“Sheet1”更改为“Chart#”。最后一点(注释掉& Workbook.Sheets.Count)可以重新添加到您的代码中,以便在您记下许多图表时增加一个增量命名。

ThisWorkbook.VBProject.VBComponents(Sheets("Sheet2").CodeName).Name = "NewChartName" ' & Workbook.Sheets.Count