#excel #spreadsheet #guid #uniqueidentifier
#excel #электронная таблица #guid #уникальный идентификатор
Вопрос:
Возможно ли установить уникальное свойство GUID для каждого листа книги Excel. Так что даже когда пользователь переименовывает лист, я мог бы программно восстановить правильный лист с помощью уникального идентификатора GUID листа.
Мы создаем плагин, который должен указывать на правильный лист Excel, даже если пользователь переименовывает его в другое значение.
Не удалось найти какой-либо дескриптор или свойство в объекте листа Excel.
Microsoft.Office.Interop.Excel.Worksheet sheet1 in ActiveWorkbook.Worksheets
Комментарии:
1. Непосредственно в Excel вы используете свойство «Name» в редакторе VBA. Это техническое название woksheet, которое имеет отношение к проекту. Это «кодовое имя» в подходе взаимодействия? Не уверен, но стоит изучить, если вы не уверены. Похоже, вы сможете, если в рабочей книге есть что-то, что вы можете редактировать… docs.microsoft.com/en-us/office/vba/api /…
2. Это не кодовое имя, если я пытаюсь получить доступ или записать что-либо в кодовом имени, которое оно не разрешает. например, я смог задать информацию о книге, используя (Microsoft. Office.Core. DocumentProperties)ActiveWorkbook. Свойства CustomDocumentProperties
3. У вас есть доступ к рабочей книге? Если вы это сделаете, откройте его, перейдите в редактор VBA, измените кодовое имя листа в свойствах рассматриваемого листа, сохраните его, а затем вернитесь к своей реализации взаимодействия и посмотрите, установлено ли значение CodeName таким, какое вы задали в редакторе VBA. Если это так, вы можете использовать это. Конечно, вы не можете использовать это при создании рабочей книги, только если вы открываете уже существующую рабочую книгу, которую вы контролируете. Имеет смысл? Я использую именно этот подход в VBA, потому что в этом весь смысл этого свойства.
4. Да, сейчас я пытаюсь. Заранее спасибо
5. Если это сработает, я добавлю его в качестве ответа. 😉
Ответ №1:
Это долгий путь, но я бы установил (Name)
поле для рабочего листа непосредственно в Excel (из редактора VBA)…
… и посмотрите, доступно ли это из поля CodeName в свойствах взаимодействия для рабочей книги в реализации C #.
Если вы не знакомы с тем, как перейти к этому редактору, в Excel нажмите Alt F11
Очевидно, что после внесения этого изменения сохраните рабочую книгу, а затем повторите попытку из вашего проекта C #.
Это поле предназначено именно для этой цели, но это только поле времени разработки, вы не можете установить его во время выполнения. Оно используется для того, чтобы в случае изменения имени листа или изменения его индекса вы все равно могли ссылаться на него через техническое название (CodeName).
Мне было бы интересно посмотреть, как это происходит и работает ли это для вас.
Комментарии:
1. Я смог получить доступ к этому кодовому имени, которое отличалось от имени листа, из Code by sheet1. Кодовое имя (Microsoft. Офис. Взаимодействие. Excel. Рабочий лист)
2. Идеально …! Пользователь никогда не найдет это, оно скрыто, как вы можете видеть. Рад, что это сработало для вас, и рад, что я смог помочь.