Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 保护图表名称_Excel_Vba - Fatal编程技术网

Excel 保护图表名称

Excel 保护图表名称,excel,vba,Excel,Vba,有人知道是否有办法保护图表名称,以便用户无法更改它吗?我有相当多的代码引用各种图表。如果用户要更改一个或多个图表名称,事情会很快变得糟糕。我可能会为您提供解决方案,但这会带来一些开销 您可以为正在使用的每个图表添加一个真正的图表,并希望在工作簿中保护其名称。它们在工作簿中显示为单独的选项卡(如表格) 看起来像这样: 右键单击图表,选择“移动图表”,然后选择“新建工作表”。这样,您将拥有“更好”的图表对象,您可以通过VBA或Ribbon菜单单独保护这些对象,并且您有一个内部代码名 就像这里:

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

我可能会为您提供解决方案,但这会带来一些开销

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

看起来像这样:

右键单击图表,选择“移动图表”,然后选择“新建工作表”。这样,您将拥有“更好”的图表对象,您可以通过VBA或Ribbon菜单单独保护这些对象,并且您有一个内部代码名

就像这里:

使用内部代码名,您的用户问题应该得到解决,因为他们可以按照自己的意愿命名,您也可以;)我不信任索引,也讨厌使用用户定义的名称——除了在代码中处理外,代码名是最好的,但这只是vba的一个主要缺陷

我猜,这些额外的图表会让你感到有些不安,所以只需让它们不可见,并在表中使用它们的副本作为图表对象

应该是这样

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


希望这有帮助;)

我可能会为您提供一个解决方案,但它会带来一些开销

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

看起来像这样:

右键单击图表,选择“移动图表”,然后选择“新建工作表”。这样,您将拥有“更好”的图表对象,您可以通过VBA或Ribbon菜单单独保护这些对象,并且您有一个内部代码名

就像这里:

使用内部代码名,您的用户问题应该得到解决,因为他们可以按照自己的意愿命名,您也可以;)我不信任索引,也讨厌使用用户定义的名称——除了在代码中处理外,代码名是最好的,但这只是vba的一个主要缺陷

我猜,这些额外的图表会让你感到有些不安,所以只需让它们不可见,并在表中使用它们的副本作为图表对象

应该是这样

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


希望这有帮助;)

试试下面的代码。将“Sheet1”更改为“Chart#”。另外,最后一点(注释掉&Workbook.Sheets.Count)可以添加回您的编码中,以添加增量命名,如果您有许多如您所述的图表

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

尝试类似于此代码的操作。将“Sheet1”更改为“Chart#”。另外,最后一点(注释掉&Workbook.Sheets.Count)可以添加回您的编码中,以添加增量命名,如果您有许多如您所述的图表

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

如果我没有错的话,那么你必须保护工作表,为什么不使用图表索引而不是名称呢?@brettdj:这一点很好!老实说,我甚至没有想到:)我不信任索引,原因与我不使用工作表索引相同。索引可以更改,但受保护的名称不能更改。我想我可能会保护工作表。谢谢你的建议。我很感激。如果我没有错的话,那么你就必须保护工作表,为什么不使用图表索引而不是名称呢。@brettdj:说得好!老实说,我甚至没有想到:)我不信任索引,原因与我不使用工作表索引相同。索引可以更改,但受保护的名称不能更改。我想我可能会保护工作表。谢谢你的建议。我很感激。这个主意很有趣。谢谢你的想法。我已经离开了这个项目,没有时间再谈这个了。我很感谢你花时间考虑这个问题!好主意。谢谢你的想法。我已经离开了这个项目,没有时间再谈这个了。我很感谢你花时间考虑这个问题!