【问题标题】:Unique Name or GUID Property of the Excel workbook sheetExcel 工作簿工作表的唯一名称或 GUID 属性
【发布时间】:2019-04-18 10:50:01
【问题描述】:

是否可以为每个 Excel 工作簿设置唯一的 GUID 属性。因此,即使用户重命名工作表,我也可以通过工作表唯一 GUID 以编程方式检索正确的工作表。

我们正在创建一个插件,即使用户将其重命名为不同的值,它也应该能够指向正确的 Excel 表。

在 Excel 工作表对象中找不到任何句柄或属性。

Microsoft.Office.Interop.Excel.Worksheet sheet1 in ActiveWorkbook.Worksheets

【问题讨论】:

  • 直接在 Excel 中,您可以在 VBA 编辑器中使用“名称”属性。这是与项目相关的 woksheet 的技术名称。是互操作方法中的“代码名称”吗?不确定,但如果您不确定,值得研究。如果工作簿是您可以编辑的东西,您似乎可以这样做...docs.microsoft.com/en-us/office/vba/api/…
  • 如果我尝试访问或写入不允许的代号中的任何内容,则它不是代号。例如,我可以使用 (Microsoft.Office.Core.DocumentProperties)ActiveWorkbook.CustomDocumentProperties 设置工作簿信息
  • 您可以访问工作簿吗?如果这样做,请打开它,转到 VBA 编辑器,在相关工作表的属性中更改工作表的 CodeName,保存它,然后返回到您的互操作实现,看看 CodeName 现在是否设置为您设置的内容在 VBA 编辑器中。如果是这样,您可以使用它。当然,如果您生成工作簿,则不能使用它,只有当您打开您可以控制的预先存在的工作簿时。有道理?我在 VBA 中使用了这种精确的方法,因为这就是该属性的全部意义。
  • 是的,现在就试试。提前致谢
  • 如果这行得通,我会把它作为答案。 ;-)

标签: excel spreadsheet guid uniqueidentifier


【解决方案1】:

这是一个长镜头,但我会直接在 Excel 中为工作表设置 (Name) 字段(来自 VBA 编辑器)...

...然后查看是否可以从 C# 实现中工作簿的互操作属性中的 CodeName 字段访问。

如果您不熟悉如何使用该编辑器,请在 Excel 中按 Alt + F11

显然,在您做出更改后,保存工作簿,然后从您的 C# 项目重试。

该字段正是用于此目的,但它只是一个设计时字段,您不能在运行时设置它。它的用途是,如果工作表的名称发生变化或索引发生变化,您仍然可以通过技术名称(代码名称)引用它。

我很想知道这是怎么回事,以及它是否适合你。

【讨论】:

  • 我能够通过 sheet1.CodeName (Microsoft.Office.Interop.Excel.Worksheet) 访问这个与来自 Code 的 sheetName 不同的 CodeName
  • 完美...!如您所见,用户永远不会发现它,它被掩埋了。很高兴这对你有用,也很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-22
  • 2021-04-29
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多