Обращение к рабочим листам Excel из кода VBA. Переименование листов, скрытие и отображение с помощью кода VBA Excel. Свойства Worksheets.Name и Worksheets.Visible.
Обращение к рабочим листам
Рабочий лист (Worksheet) принадлежит коллекции всех рабочих листов (Worksheets) книги Excel. Обратиться к листу можно как к элементу коллекции и, напрямую, по его уникальному имени.
Откройте редактор VBA и обратите внимание на вашу книгу в проводнике, где уникальные имена листов указаны без скобок, а в скобках — имена листов, отображаемые на ярлычках в открытой книге Excel. Уникальные имена листов отсортированы по алфавиту и их расположение по порядку не будет соответствовать их индексам (номерам), если листы перемещались по отношению друг к другу. Индексы листов смотрите по порядку расположения ярлычков в открытой книге. Переместили листы — изменились их индексы.
Обращение к рабочему листу в коде VBA Excel:
‘По уникальному имени УникИмяЛиста ‘По индексу Worksheets(N) ‘По имени листа на ярлычке Worksheets(«Имя листа») |
- УникИмяЛиста — уникальное имя листа, отображаемое в проводнике редактора VBA без скобок, с помощью кода VBA изменить его невозможно.
- N — индекс листа от 1 до количества всех листов в книге, соответствует порядковому номеру ярлычка этого листа в открытой книге Excel.
- Имя листа — имя листа, отображаемое в проводнике редактора VBA в скобках, с помощью кода VBA изменить его можно.
Количество листов в рабочей книге Excel определяется так:
‘В активной книге Worksheets.Count ‘В любой открытой книге, ‘например, в «Книга1.xlsm» Workbooks(«Книга1.xlsm»).Worksheets.Count |
Переименование листов
В VBA Excel есть некоторые особенности в наименовании листов, так как у рабочего листа есть два свойства, связанных с именем: (Name) и Name. Откройте окно «Properties» в редакторе VBA, нажав клавишу «F4», и выделите любой лист в проводнике. Вы увидите, что в окне «Properties» свойству (Name) в скобках соответствует в проводнике уникальное имя листа без скобок, а свойству Name без скобок соответствует изменяемое имя листа в скобках. Оба имени в окне «Properties» можно редактировать.
С помощью кода VBA Excel можно редактировать только имя листа Name, отображаемое на ярлычке листа и в проводнике без скобок. Для этого используется свойство рабочего листа Worksheets.Name со следующим синтаксисом:
expression.Name
где expression — переменная, представляющая собой объект Worksheet. Смена имени осуществляется путем присвоения нового значения свойству Worksheets.Name.
Допустим, у нас есть лист с уникальным именем (Name) — Лист1, индексом — 1 и именем Name — МойЛист, которое необходимо заменить на имя — Реестр.
Лист1.Name = «Реестр» Worksheets(1).Name = «Реестр» Worksheets(«МойЛист»).Name = «Реестр» |
Скрытие и отображение листов
Для скрытия и отображения рабочих листов в VBA Excel используется свойство Worksheet.Visible со следующим синтаксисом:
expression.Visible
где expression — переменная, представляющая собой объект Worksheet. Свойству Worksheet.Visible могут присваиваться следующие значения:
- False — лист становится невидимым, но он будет присутствовать в списке скрытых листов, и пользователь сможет его отобразить с помощью инструментов рабочей книги Excel.
- xlVeryHidden — лист становится супер невидимым и его не будет в списке скрытых листов, пользователь не сможет его отобразить. Актуально для Excel 2003-2016.
- True — лист становится видимым.
Аналоги присваиваемых значений:
- False = xlHidden = xlSheetHidden = 1
- xlVeryHidden = xlSheetVeryHidden = 2
- True = xlSheetVisible = -1 (константа xlVisible вызывает ошибку)
Примеры:
Лист1.Visible = xlSheetHidden Лист2.Visible = —1 Worksheets(Worksheets.Count).Visible = xlVeryHidden Worksheets(«МойЛист»).Visible = True |
Как создать, скопировать, переместить или удалить рабочий лист с помощью кода VBA Excel, смотрите в этой статье.
09.02.09 — 15:00
Надо выгрузить данные в эксель. Но там много листов, мне нужно получить нужный. Ънаю как перебором, а как просто найти по имени?
Gbie
Екс= НОвый COMОбъект(«Excel.Application») ;
НашФайл = Екс.Workbooks.Open(путьКФайлу);
Лист = НашФайл.Sheets.Name(«ВП»);
не идет, да и сам чую наверно неверно, но как?
1 — 09.02.09 — 15:03
*******************************
Открытие книги (файла):
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
ПутьКФайлу — полный путь к файлу книги Excel.
Выбор листа книги для работы с ним:
Лист = Книга.WorkSheets(НомерЛиста);
или
Лист = Книга.WorkSheets(ИмяЛиста);
НомерЛиста — номер листа в книге, ИмяЛиста — имя листа в книге.
Получение значения ячейки листа:
Значение = Лист.Cells(НомерСтроки, НомерКолонки).Value;
НомерСтроки, НомерКолонки — номер строки и номер колонки, на пересечении которых находится ячейка.
Важно: не забывайте поле выполнения нужных действий добавлять код Эксель.Quit(); , иначе запущенный процесс останется незавершенным и будет занимать память и процессор компьютера.
*********************************************
2 — 09.02.09 — 15:05
Лист = НашФайл.Sheets.Item(«ВП»);
3 — 09.02.09 — 15:06
мульен вариантов
4 — 09.02.09 — 15:06
спасибо
5 — 09.02.09 — 16:06
И еще, уж извените в тему.
Как записать измененый файл, наверно типа
НашФайл.Save(); правильно?
А вот как его показать пользователю? Наверно что то типа Visible…?
6 — 09.02.09 — 16:12
7 — 09.02.09 — 16:12
а как можно выбрать только строчки? скажем все строчки по столбец ВВ?
8 — 09.02.09 — 16:17
(7)
Для Х=1 по Лист.UsedRange.Row.Count Цикл
Сообщить(«»+Лист.Cells(Х, НомерКолонки).Value );
КонецЦикла;
На вскидку, как то так. :):):)
9 — 09.02.09 — 16:21
Row.Count в листе 65000:)) все не выкинет?
10 — 09.02.09 — 16:27
(9) Что не выкинет? Куда не выкинет? Кто здесь?
11 — 09.02.09 — 16:28
(9) читай справку по UsedRange
12 — 09.02.09 — 16:28
Row.Count в листе Эксель 65000:))
не получится такого цикла от 1 до 65000?
13 — 09.02.09 — 16:29
а..понял..по смыслу догадался
14 — 09.02.09 — 17:39
на Лист.UsedRange.Row.Count ругается
15 — 10.02.09 — 07:23
ап
16 — 10.02.09 — 07:27
попытка
олеЕксель = новый COMОбъект(«Excel.Application»);
исключение
Предупреждение(«Не удалось создать объект автоматизации для работы с MS Excel!»);
возврат;
конецпопытки;
попытка
олеКнига = олеЕксель.Workbooks.Open(стрИсточник);
исключение
Предупреждение(«Не удалось открыть для чтения выбранный файл!»);
возврат;
конецпопытки;
олеЛист = олеКнига.Worksheets.Item(1);
чисСтрок = олеЛист.UsedRange.Rows.Count;
17 — 10.02.09 — 07:45
(16) а как цикл запустить чтобы вывелись строчки с первой строки по столбец ВВ например? можно использовать запрос?
18 — 10.02.09 — 07:47
(17)сам то хоть понял чего спросил … с первой строки по столбец… это как ты себе представляешь?
19 — 10.02.09 — 07:49
(18) А что? «Копать от забора и до обеда»….
20 — 10.02.09 — 07:49
(16) Ну конечно же Rows. :):) Досадная очепятка.
21 — 10.02.09 — 07:49
с ячейки А1 по последюю ячейку столбца ВВ
22 — 10.02.09 — 07:50
может запрос можно использовать? что нибудь (select * from олеЛист)? проканает?
23 — 10.02.09 — 07:52
(21)
Для Х=1 по Лист.UsedRange.Rows.Count Цикл
Для У=1 По Лист.UsedRange.Columns.Count Цикл
Сообщить(«»+Лист.Cells(Х, У).Value );
КонецЦикла;
КонецЦикла;
24 — 10.02.09 — 07:56
(23)нормально выводит…только значения в столбик…а как чтобы строка в строку выводилась?
25 — 10.02.09 — 08:02
(24) Эээ, ну посмотри в СП: ТабличныйДокумент; Присоединить…. ну, и т.д.
26 — 10.02.09 — 08:11
блин…жалко запросом нельзя сделать…..
блин а вопрос в офф- можно конвертировать файл эксель в дбф4?
27 — 10.02.09 — 08:14
ADO … и хоть за запрашивайся
28 — 10.02.09 — 08:24
(27)пример есть?
29 — 10.02.09 — 08:48
ап
skunk
30 — 10.02.09 — 10:34
Aiky 5 / 3 / 2 Регистрация: 14.12.2014 Сообщений: 71 |
||||
1 |
||||
23.01.2018, 19:54. Показов 7751. Ответов 5 Метки нет (Все метки)
Добрый день!
Нужно обратиться к листу по имени, а не по индексу, лист скрыт, всего листов в книге 4, обратиться нужно к листу «ОпцииПеречня» и записать в ячейку B1 данные: kodi[0].
1 |
kesean 290 / 289 / 108 Регистрация: 04.09.2010 Сообщений: 638 |
||||
23.01.2018, 22:08 |
2 |
|||
РешениеПопробуйте так:
2 |
Pavel55 971 / 353 / 135 Регистрация: 27.10.2006 Сообщений: 764 |
||||
24.01.2018, 11:51 |
3 |
|||
Решениелибо так
Добавлено через 4 минуты
1 |
5 / 3 / 2 Регистрация: 14.12.2014 Сообщений: 71 |
|
24.01.2018, 12:40 [ТС] |
4 |
kesean, Pavel55, Спасибо вам обоим, подошли оба варианта!
0 |
290 / 289 / 108 Регистрация: 04.09.2010 Сообщений: 638 |
|
24.01.2018, 15:10 |
5 |
kesean, там нужны квадратные скобки вокруг названия листа, круглые, думаю не подойдут Я не проверял, но это, вроде как функция.
0 |
971 / 353 / 135 Регистрация: 27.10.2006 Сообщений: 764 |
|
24.01.2018, 15:11 |
6 |
ну, раз у ТС получилось, значит при использовании get_Item нужно использовать круглые скобки
0 |
Kaban Пользователь Сообщений: 8 |
Имеются листы с именами с Лист1 по Лист46 и есть условие некое. Изменено: Kaban — 04.07.2013 19:16:19 |
Hugo Пользователь Сообщений: 23253 |
#2 04.07.2013 17:26:24 Чтоб внести изменения — совершенно не нужно назначать лист активным.
И вообще, зачем имя? Изменено: Hugo — 04.07.2013 17:35:53 |
||
Kaban Пользователь Сообщений: 8 |
Да я вообще из 1с-ки к Excel обращаюсь. Это всё и усложняет. Имя листа для меня это уникальный идентификатор в данном случаем. Изменено: Kaban — 05.07.2013 09:34:50 |
Hugo Пользователь Сообщений: 23253 |
«забиваются данные в первый лист» потому, что Вы код написали неправильно. Да и перебор листов по описанию не нужен. |
Kaban Пользователь Сообщений: 8 |
#5 05.07.2013 10:23:14
Вот этим ответом Вы меня совсем запутали. Как тогда обратиться к листу? Для НомерЛиста = 1 По КоличествоЛистов Цикл Какие еще варианты могут быть? Что не так по Вашему мнению? Изменено: Kaban — 05.07.2013 10:25:34 |
||
Johny Пользователь Сообщений: 2737 |
#6 05.07.2013 10:26:49
Уважаемый Kaban! Надо изначально писать, что у вас имеется некий список «номеров» листов и что надо оттуда взять этот номер. Только вот поясните, что значит «номер листа»? Индекс листа? Имя листа? There is no knowledge that is not power |
||
Hugo Пользователь Сообщений: 23253 |
#7 05.07.2013 10:27:26 «Мне надо найти листы с такими именами (3, 13, 22, 5)» — так зачем искать?
Изменено: Hugo — 05.07.2013 10:29:21 |
||
Kaban Пользователь Сообщений: 8 |
#8 05.07.2013 10:39:06
Из 1с-ки обращаюсь к Excel впервые, что накопал в инете так и написал. Синтаксис возможно не тот, я не знаю.
А пройдет так: sheets(НомерЛиста) ?? |
||||
Kaban Пользователь Сообщений: 8 |
Ребят, а можно «для тех кто в танке» написать код?
Мне нужно найти лист с номером как в колонке «Номер» таблицы значений (он может быть любой). (Лист с именем точно существует) У нас жара +30, я туплю похоже или не то спрашиваю. Извините Изменено: Kaban — 05.07.2013 10:46:28 |
||||||||||||
Hugo Пользователь Сообщений: 23253 |
#10 05.07.2013 10:44:38 Можно и так
если НомерЛиста=3 или другое число. Только в общем случае нужно писать
т.к. если будут другие, не рабочие листы — столкнётесь с ошибкой работы. Изменено: Hugo — 05.07.2013 10:46:57 |
||||
Hugo Пользователь Сообщений: 23253 |
#11 05.07.2013 11:00:21 Ну так вся проблема в том, как перебрать эту Вашу таблицу — это уже Ваша 1С сторона.
|
||
Kaban Пользователь Сообщений: 8 |
#12 05.07.2013 11:04:19
В итоге должно быть так? |
||||
Hugo Пользователь Сообщений: 23253 |
#13 05.07.2013 11:10:17 Что за ЛистАЗК и КнигаАЗК?
Изменено: Hugo — 05.07.2013 11:13:58 |
||||
Kaban Пользователь Сообщений: 8 |
#14 05.07.2013 11:15:52
Спасибо, думаю это то, что надо. Буду копать теперь как перенести это на язык 1с. |
||||||
Johny Пользователь Сообщений: 2737 |
Только учтите, что Sheets(3) и Sheets(«3») — это разные вещи. There is no knowledge that is not power |
Kaban Пользователь Сообщений: 8 |
#16 05.07.2013 11:43:08
да |
||
На чтение 6 мин. Просмотров 223 Опубликовано 21.05.2021
Обычно мы можем легко находить/искать ячейки с помощью функции поиска и замены. Но иногда нам нужно искать по имени листа. Например, на панели вкладок листа сжимаются десятки листов, и нам нужно быстро найти рабочий лист и перейти к нему. Так как? В этой статье обсуждаются оба метода, позволяющие легко решить эту проблему.
- Поиск по имени рабочего листа с помощью VBA
- Поиск по имени рабочего листа с помощью Создать список имен листов Kutools for Excel ( 5 шагов )
- Поиск по имени рабочего листа с помощью области навигации Kutools for Excel ( 2 шага )
Содержание
- Быстрый поиск по имени рабочего листа с помощью Kutools for Excel
- Поиск по имени рабочего листа с помощью VBA
- Поиск по имени рабочего листа с помощью Create List of Sheet Names of Kutools for Excel
- Поиск по имени рабочего листа с панелью навигации Kutools for Excel
- Статьи по теме:
Быстрый поиск по имени рабочего листа с помощью Kutools for Excel
Теперь в Kutools for Excel улучшена его панель навигации и поддерживает простой поиск по имени листа, как показано на снимке экрана ниже. 30-дневная бесплатная пробная версия полнофункциональной версии!
Вкладка Office Включает редактирование и просмотр с вкладками в Office и делает вашу работу намного проще …
Подробнее … Скачать бесплатно …
Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%
- Повторно использовать что угодно: добавьте наиболее часто используемые или сложные формулы, диаграммы и все остальное в избранное и быстро используйте их в будущем.
- Более 20 текстовых функций: извлечение числа из текстовой строки; Извлечь или удалить часть текстов; Преобразование чисел и валют в английские слова.
- Инструменты слияния: несколько книг и листов в одну; Объединить несколько ячеек/строк/столбцов без потери данных; Объедините повторяющиеся строки и суммируйте.
- Инструменты разделения: разделение данных на несколько листов в зависимости от значения; Из одной книги в несколько файлов Excel, PDF или CSV; Один столбец в несколько столбцов.
- Вставить пропуск скрытых/отфильтрованных строк; Подсчет и сумма по цвету фона; Массовая отправка персонализированных писем нескольким получателям.
- Суперфильтр: создавайте расширенные схемы фильтров и применяйте их к любым листам; Сортировать по неделе, дню, частоте и т. Д. Фильтр жирным шрифтом, формулами, комментарием …
- Более 300 мощных функций; Работает с Office 2007-2019 и 365; Поддерживает все языки; Простое развертывание на вашем предприятии или в организации.
Подробнее … Бесплатная загрузка …
->
Поиск по имени рабочего листа с помощью VBA
Этот метод вводит макрос VBA для простого поиска на листе в активной книге.
1 . Одновременно нажмите клавиши Alt + F11 , чтобы открыть окно Microsoft Visual Basic для приложений.
2 . Нажмите Вставить > Module , а затем вставьте следующий код VBA в новое открывающееся окно модуля.
VBA: поиск по имени листа
3 . Нажмите клавишу F5 или кнопку Run , чтобы запустить этот VBA.
4 . Появится диалоговое окно поиска на листе, введите имя листа, на котором вы будете искать, и нажмите кнопку OK . См. Снимок экрана:
Появится другое диалоговое окно и сообщит, есть ли на листе найдено или нет. Просто закройте его.
Примечание. Для этого VBA требуется точно совпадающее имя рабочего листа. Только вы вводите точно полное имя рабочего листа, вы можете узнать этот рабочий лист с помощью этого VBA.
Поиск по имени рабочего листа с помощью Create List of Sheet Names of Kutools for Excel
В приведенном выше VBA может быть непросто найти рабочий лист, если вы не можете точно запомните и введите имя рабочего листа. Этот метод познакомит вас с утилитой Kutools for Excel Create List of Sheet Names для быстрого поиска и перехода к рабочему листу.
Kutools for Excel – включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 30-дневная пробная версия, кредитная карта не требуется! Бесплатная пробная версия!
Kutools for Excel – объединяет более 300 дополнительных функций и инструментов для Microsoft Excel
Перейти к загрузке
Бесплатная пробная версия 60 днейПокупка
PayPal/MyCommerce
->
1 . Нажмите Kutools Plus > Рабочий лист > Создать список имен листов , чтобы открыть диалоговое окно «Создать список имен листов». См. Скриншоты:
2 . В открывшемся диалоговом окне «Создать список имен листов» укажите параметры: (1) установите флажок Содержит список гиперссылок ; (2) введите имя для нового созданного индексного листа; (3) укажите место нового индексного листа; и (4) перечислить все имена рабочих листов в одном столбце на индексном листе.
3 . Нажмите кнопку ОК . Теперь создается новый индексный лист, который помещается перед всеми листами.
4 . Перейдите к индексной странице и одновременно нажмите клавиши Ctrl + F , чтобы открыть диалоговое окно «Найти и заменить», введите ключевое слово в Найдите поле и нажмите кнопку Найти все .. См. Снимок экрана:
Теперь все имена листов, содержащие ключевые слова, найдены и перечислены в нижней части окна поиска. и диалоговое окно “Заменить”. См. Диалоговое окно выше.
5 . Щелкните имя найденного листа в диалоговом окне «Найти и заменить», чтобы выбрать соответствующую ячейку, затем щелкните выбранную ячейку в индексном листе, и он сразу перейдет к соответствующему листу.
Демонстрация: поиск по имени листа в Excel
Kutools for Excel включает более 300 удобных инструментов для Excel, которые можно бесплатно попробовать без ограничений в течение 30 дней. Загрузить и бесплатную пробную версию !
Поиск по имени рабочего листа с панелью навигации Kutools for Excel
Если у вас установлен Kutools for Excel, вы можете легко искать листы по имени листа в области навигации. Пожалуйста, сделайте следующее:
Kutools for Excel – включает более 300 удобных инструментов для Excel. Полнофункциональная 30-дневная бесплатная пробная версия, кредитная карта не требуется! Получить сейчас
1 . По умолчанию открывается панель навигации. Если закрыто, нажмите Kutools > Панель навигации , чтобы отобразить панель навигации, а затем нажмите (Рабочая книга и лист) в левой части области навигации.
2 . Установите флажок Фильтр в области навигации и введите указанные ключевые слова в следующее поле. Теперь все листы, имена которых содержат указанные ключевые слова, будут найдены и перечислены в поле ниже. См. Снимок экрана:
Примечание : нажатие результаты поиска перескочат и сразу откроют соответствующий рабочий лист.
Демо: поиск по имени рабочего листа с помощью панели навигации Kutools for Excel
Kutools for Excel включает более 300 удобных инструментов для Excel, которые можно попробовать бесплатно без ограничения в течение 30 дней. Загрузить и бесплатную пробную версию !
Статьи по теме:
Создать гиперссылку в ячейке на другой лист в той же книге