Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2010, 20:15   #1
O_H
Пользователь
 
Регистрация: 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.
O_H вне форума Ответить с цитированием
Старый 10.09.2010, 20:52   #2
KL (XL)
Форумчанин
 
Аватар для KL (XL)
 
Регистрация: 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
KL (XL) вне форума Ответить с цитированием
Старый 13.09.2010, 12:47   #3
O_H
Пользователь
 
Регистрация: 06.07.2010
Сообщений: 68
По умолчанию

Excel XP.
Там ситуация была следующая: в книге программно по очереди создаются листы, заполняются данными, переименовываются и т.п.... к моменту создания проблемного листа, предыдущий лист(по порядку - Лист17) был уже переименован, а этот создавался почему-то сразу как "Лист18(Лист17)", т.е. ему заранее присваивалось имя, как-будто его переименовывали. Отсюда и ошибка в дальнейшей работе программы...
----------------------------------------------------------
Обнаружил, что при присваивании ссылки на проект:
Set VBProj = xlsBook.VBProject
в последнем появляются "исконные" имена листов, поэтому строку из первого сообщения переделал как:
Set VBComp = VBProj.VBComponents(xlsBook.Workshe ets(strListName).CodeName)
, где strListName - переименованное название листа
O_H вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
свойство 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