|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.09.2010, 20:15 | #1 |
Пользователь
Регистрация: 06.07.2010
Сообщений: 68
|
Загадочное свойство листа CodeName
Как я понял оно должно возвращать "исконное" имя листа, т.е., если переименовать Лист5 в "Мой отчёт", то у листа св-во Name будет равно "Мой отчёт", а CodeName - "Лист5".
Непонятно, только, когда оно появляется? Добавляю в книгу листы программно, у очередного листа надо получить истинное название: Set xlsSheet = Nothing Set xlsSheet = xlsBook.sheets.Add(After:=xlsBook.W orksheets(xlsBook.Worksheets.Count) ) xlsSheet.Activate debug.print xlsSheet.CodeName ...и возвращается пустая строка. конструция xlsBook.Worksheets(xlsBook.Workshee ts.Count).CodeName тоже не спасает... Может как-то по иному можно получить это "исконное" имя? на возможное "а зачем": чтобы в коде обратиться к модулю листа, необходимо в строку Set VBComp = VBProj.VBComponents(strListName) передать именно "родное" имя. ----------------------------------------- св-во СodeName начинает возвращать значения если открыть/закрыть окно VBA книги, но ведь программно это не сделаешь... Последний раз редактировалось O_H; 10.09.2010 в 20:31. |
10.09.2010, 20:52 | #2 |
Форумчанин
Регистрация: 04.08.2009
Сообщений: 112
|
У меня описанная проблема не воспроизводится. Код возвращает имя листа с первой попытки как и следовало ожидать. Вероятно ситуация прояснится если мы увидим полный код и узнаем версию Excel
KL [MVP - Microsoft Office Excel]
CPU: Intel Core 2, 2.17GHz | RAM: 3.25GB (4GB) | GPU: nVidia Quadro FX 2500M OS: Windows 7 Ultimate x64 EN | MSO: 2010 Professional Plus x86 EN |
13.09.2010, 12:47 | #3 |
Пользователь
Регистрация: 06.07.2010
Сообщений: 68
|
Excel XP.
Там ситуация была следующая: в книге программно по очереди создаются листы, заполняются данными, переименовываются и т.п.... к моменту создания проблемного листа, предыдущий лист(по порядку - Лист17) был уже переименован, а этот создавался почему-то сразу как "Лист18(Лист17)", т.е. ему заранее присваивалось имя, как-будто его переименовывали. Отсюда и ошибка в дальнейшей работе программы... ---------------------------------------------------------- Обнаружил, что при присваивании ссылки на проект: Set VBProj = xlsBook.VBProject в последнем появляются "исконные" имена листов, поэтому строку из первого сообщения переделал как: Set VBComp = VBProj.VBComponents(xlsBook.Workshe ets(strListName).CodeName) , где strListName - переименованное название листа |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
свойство canvas. | vedro-compota | Общие вопросы Delphi | 5 | 14.05.2010 19:30 |
Создание листа с одновременным созданием формулы на ячейку нового листа | ShamanK | Microsoft Office Excel | 4 | 02.05.2010 22:00 |
Загадочное исчезновение информации? | Nat9308 | Компьютерное железо | 3 | 08.03.2010 02:34 |
Загадочное сообщение | Alex Cones | Общие вопросы Delphi | 14 | 12.05.2009 20:05 |
Свойство autosize | Xeon332 | Общие вопросы Delphi | 9 | 06.02.2009 01:18 |