1 | |
Определить, есть ли лист в книге с заданным именем28.06.2012, 18:03. Показов 62980. Ответов 13
Метки нет (Все метки)
0
|
28.06.2012, 18:03 | |
Ответы с готовыми решениями:
13
Есть ли лист с определенным именем в книге? Определить существует ли лист в книге Проверить есть ли файл с заданным именем в папке Как создать новый лист в книге со ссылкой на предыдущий лист? |
призрак
|
|
28.06.2012, 18:08 | 2 |
Сообщение было отмечено как решение
Решение
AndreA SN, я, конечно, рискую, но ради Вас готов разок получить по шее.
Вы задаёте так много интересных вопросов по Excel'ю, ответы на которые давным-давно лежат в сети. а у меня к Вам один вопрос: Вы в курсе, что существуют поисковые системы?
3
|
здесь больше нет...
3374 / 1672 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
|
||||||
28.06.2012, 18:09 | 3 | |||||
1
|
28.06.2012, 18:18 | 4 | |||||||||||||||||||||||||||||||||||
Сообщение было отмечено как решение
Решение
Не мое:
9
|
26812 / 14491 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
28.06.2012, 19:04 | 5 |
Сообщение было отмечено как решение
Решение
Ну и мои 5 копеек...
Можно использовать ADODB-соединение к книге екселя, открыть рекордсет для OpenSchema с параметром adSchemaTables. Проход по рекордсету даст все листы книги. Поиск по рекордсету позволит найти заданное имя. Метод удобен для поиска листов из внешнего файла.
4
|
29.06.2012, 02:04 [ТС] | 6 |
да в курсе я))) но такого количества толковых ответов да еще сконцентрированных в одном месте Вы там не найдете))) Поисковая система для профи))) а я, слава Богу, вопросы пока учусь задавать. При этом решаю свои насущные задачки. Вот что гарантированно могу сказать - то не деньги я Вашими ответами зарабатываю)))
А вообще по моему профилю я не считаю, сколько раз мне задают один и тот же вопрос. Я просто отвечаю. А программирование - совсем не мой профиль))) а если серьезно - пока тут висит один мой вопрос - я занимаюсь другими. На расшифровку поисковика нет совсем времени... И английский плохо знаю опять же... Вообщем благодарствую сказал... Добавлено через 3 минуты Кстати, о невеждах, ikki))) Слепой иногда пройдет там, где зрячий оступится)))
0
|
1301 / 403 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
|
||||||
29.06.2012, 11:41 | 7 | |||||
Не вижу здравого смысла в сообщении #4: это засорение интернета ненужной информацией по данному вопросу и усложнение для непрограммистов, которым просто нужно написать макрос.
Всё это заменяется вот этим:
3
|
15147 / 6420 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|||||||||||
29.06.2012, 13:37 | 8 | ||||||||||
Busine2012,
собсно, достаточно такой конструкции:
Попробуй
6
|
1301 / 403 / 22
Регистрация: 21.10.2011
Сообщений: 1,285
|
|
29.06.2012, 13:58 | 9 |
Казанский,
буду иметь ввиду.
0
|
29.06.2012, 15:51 | 10 |
А в чем собственно проблема?
Когда искал для себя аналогичное решение данного вопроса, оно достаточно быстро нашлось в поисковике на Планете. Для меня это хороший пример, как шестью разными вариантами можно определить наличие листа. При том, что я практически не знаю объектной модели Excel, для меня примеры понятны. И то что определение сделано через функцию тоже плюс, не нужно в коде каждый раз награмождать конструкции, если делаются регулярные проверки. PS: для себя взял шестой вариант через Index, как наиболее понятный.
0
|
0 / 0 / 0
Регистрация: 11.11.2017
Сообщений: 5
|
|||||||||||
11.02.2019, 01:28 | 11 | ||||||||||
Дабы не создавать новую тему,
В моей книге есть макросы, имеющие в своем составе формулы со ссылками на другие листы этой книги. При запуске макросов необходимо проверить книгу на соответствие имен листов (не изменил ли кто случайно). если все ОК, то запускаем другой макрос, если нет, то сообщение, какой лист нужно проверить. воспользовался примером Busine2012, и Казанский, написал код:
Макрос работает. Вопрос: можно ли упростить код для проверки имен листов, если число проверяемых листов на правильность имени будет больше 10 (без ухудшения производительности)? Было бы конечно лучше, если макрос сам переименовывал неправильные названия без участия пользователя.. Заранее спасибо. Добавлено через 25 минут
Но код проверяет (соответственно и переименовывает неправильные листы) по одному за работу всего цикла. Хотелось бы чтобы сразу все листы проверил, и все исправил. Добавлено через 5 минут Возникла мысль, хотелось бы узнать мнение о целесообразности, Может обойтись без проверки листов и сразу все листы переименовать?
0
|
15147 / 6420 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
11.02.2019, 15:33 | 12 | |||||
dmb2,
0
|
0 / 0 / 0
Регистрация: 11.11.2017
Сообщений: 5
|
|
11.02.2019, 19:29 | 13 |
Казанский, спасибо!
Код действительно очень упростился ! (Правда пока не проверял работу кода. нет доступа к компу)..а можно ли к этому коду брбавить изменение имен листов по codename без сообщения, или нужно весь код менять? Codename у меня уже изменены, правда на кириллице. Никак не могу сообразить что стабильнее и быстрей, проверить на названия листы и при ошибке переименовывать, или сразу присваивать имена листов по Codename каждого листа.
0
|
0 / 0 / 0
Регистрация: 11.11.2017
Сообщений: 5
|
||||||
21.02.2019, 21:11 | 14 | |||||
Нашел ответ на вопрос как лучше сделать, проверять все листы на соответствие имени или сразу менять названия.
Пришел к алгоритму: сначала проверить имена, и если какое-нибудь имя не совпадает,то тогда переименовать все листы заново. В самом распространенном случае, когда все имена листов правильные, переименование не происходит и за счет этого макрос быстрее отрабатывает (примерно на 0,03 сек).Мелочь, а приятно. Казанский, спасибо за код.
0
|
21.02.2019, 21:11 | |
21.02.2019, 21:11 | |
Помогаю со студенческими работами здесь
14
Проверить есть ли в папке файл с заданным именем; если нет такого, то открыть другой Перенести на новый лист строки с определенным именем, и переименовать лист Можно ли как то определить что компонент с заданным именем присутствует в коллекции Можно ли как то определить что компонент с заданным именем присутствует в коллекции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |