Выбор значения из выпадающего списка с поиском и переходом к ячейке с таким значением в Excel

30.06.17

Интеграция - Загрузка и выгрузка в Excel

Поиск и переход к ячейке выполняется при помощи макроса. Макрос, как и сама книга, формируются программно в 1С.

Скачать исходный код

Наименование Файл Версия Размер
Выбор значения из выпадающего списка с поиском и переходом к ячейке с таким значением в Excel:
.erf 10,23Kb
5
.erf 10,23Kb 5 Скачать

Ниже описан способ программно создать ячейку с выпадающим списком на листе книги Excel такую, что после выбора значения в списке, был совершен переход к первой найденной ячейке с таким значением. Поиск и переход осуществляется при помощи макроса-обработки события изменения листа.

Выпадающий список

1. Создадим приложение и книгу Excel

ПриложениеExcel = Новый COMОбъект("Excel.Application");
ПриложениеExcel.DisplayAlerts = 0;
ПриложениеExcel.Visible = 0;

КнигаExcel = ПриложениеExcel.Workbooks.Add();

2. В созданной книге у меня один лист (ПриложениеExcel.SheetsInNewWorkbook = 1, значение можно изменить), переименуем в List

Лист1 = КнигаExcel.Sheets(1);
Лист1.Name = "List";

3. Заполним первый лист значениями, среди них и будем осуществлять поиск и переход. Может так случиться, что на присвоении Value будет появляться ошибка, можно попробовать использовать Value2

Лист1.Cells(  3, 1).Value = "Клён";
Лист1.Cells(100, 1).Value = "Липа";
Лист1.Cells(200, 1).Value = "Ясень";
Лист1.Cells(300, 1).Value = "Береза";
// добьём для красоты
Для А = 4 По 299 Цикл
	Если А = 100 Или А = 200 Тогда
		Продолжить;
	КонецЕсли;		
	Лист1.Cells(А, 1).IndentLevel = 2;
	Лист1.Cells(А, 1).Value = А;
КонецЦикла;

4. Добавим второй лист, после Лист1 (за это отвечает указанный второй параметр метода - After), переименуем в Groups; будем использовать этот лист для хранения именованного списка; этот лист можно затем скрыть для удобства

Лист2 = КнигаExcel.Sheets.Add(, Лист1);
Лист2.Name = "Groups";

5. Заполним значения для создания именованного списка, будем использовать ссылки на случай изменения исходных значений. Обращу внимание на то, что для выпадающего списка мы можем использовать только стоящие рядом колонки или строки

Лист2.Cells(1, 1).FormulaLocal = "=List!R3C1";
Лист2.Cells(2, 1).FormulaLocal = "=List!R100C1";
Лист2.Cells(3, 1).FormulaLocal = "=List!R200C1";
Лист2.Cells(4, 1).FormulaLocal = "=List!R300C1";

6. Присвоим имя Search нашей группе ячеек

КнигаExcel.Names.Add("Search", "=Groups!R1C1:R4C1");

7. Добавим к ячейке (через объект Range) проверку вводимых значений с типом данных Список (первый параметр XlDVType: xlValidateList = 3) и источником Search (4-й параметр)

Лист1.Range("A1").Validation.Add(3, , , "=Search", );

Выпадающий список создан. При желании по запросу "выпадающий список excel" можно найти статьи об интерактивном создании такого списка на тематических сайтах.

Макрос

Добавим макрос обработки выбора значения и поиска первого совпадающего с ним значения в первой колонке. После выбора значения из выпадающего списка, макрос переместит выделение к первой найденной ячейке с этим значением. Здесь может случиться казус в виде ошибки "Программный доступ к проекту Visual Basic не является доверенным". Необходимо включить флаг "Доверять доступ к объектной модели проектов VBA" (справедливо для Excel 2010):
Панель "Разработчик" -> группа "Код" -> Безопасность макросов -> меню "Параметры макросов" -> поле "Параметры макросов для разработчика".
Здесь же выбрать "Отключить все макросы с уведомлением "(разрешать запуск с уведомлением "Включить содержимое") или "Включить все макросы". Другой вариант доступа, если вдруг у вас не включена закладка Разработчик:
Файл -> Параметры -> Центр управления безопсностью -> Параметры центра управления безопсностью... -> Параметры макросов.
Но не всегда эти настойки "держатся", надежнее это исправить в реестре: 
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\1x.0\Excel\Security,
параметр AccessVBOM = 1, параметр VBAWarnings установите 1 (Включить все макросы) или 2 (Отключить все макросы с уведомлением).
Собственно, текст макроса вставляется так
КнигаExcel.VBProject.VBComponents("Лист1").CodeModule.InsertLines(1, ТекстМакроса);

Параметр в VBComponents должен быть именно таким Лист1. Вставляем строку в модуль, начиная с первой строки. В переменную ТекстМакроса следует поместить

Private Sub Worksheet_Change(ByVal Target As Range)
	
	Dim iRange As Range
	
	If Target.Cells.Count > 1 Then Exit Sub
	
	If Not Intersect(Target, Range("A1")) Is Nothing Then
		If Not IsEmpty(Target) Then
			
			Set iRange = Range("A2:A65536").Find(What:=Target)
			
			If iRange Is Nothing Then
				Exit Sub
			Else
				iRange.Select
			End If
			
		End If
	End If

End Sub

Это обработчик события изменения листа. В качестве параметра выступает объект Range. A1 - ячейка (точнее объект Range), изменение в которой мы отслеживаем, в ней содержится наш выпадающий список. A2:A65536 - диапазон, где будет осуществляться поиск (65536 - пережиток Excel 97), если ячейки объединены, то надо указать весь диапазон. то есть, если ячейки А и B объединены, то диапазон будет A2:B65536. Комментировать весь код на VBA я не стану, но его праобраз можно найти на одном из тематических сайтов (где главная тема - Excel).

"Заморозим" первую строку на листе List, чтобы после выделения найденной ячейки, ячейка с выпадающим списком не уходила за пределы экрана 

КнигаExcel.Sheets(1).Activate();
ПриложениеExcel.ActiveWindow.SplitRow = 1;
ПриложениеExcel.ActiveWindow.FreezePanes = Истина;

 Т.к. "замораживание" возможно только у объекта Window (это набор некоторых элементов управления листа), надо активизировать первый лист List.

Теперь можно открыть книгу сделав приложение видимым, но только если код выполнялся на клиенте

ПриложениеExcel.Visible = 0;

Или записать книгу и передать на клиента/отправить по почте и т.д., если код выполнялся на сервере,

КнигаExcel.SaveAs(ИмяФайла, ФорматФайла);

Для книги с макросами параметр ФорматФайла должен быть равен 52 для Excel 2007-2016 (xlOpenXMLWorkbookMacroEnabled, with or without macro's in 2007-2016, xlsm) или 56 для Excel 97 (xlExcel8, 97-2003 format in Excel 2007-2016, xls). После записи следует закрыть книгу и выйти из приложения

КнигаExcel.Close(Ложь);

ПриложениеExcel.DisplayAlerts = 1;
ПриложениеExcel.Quit();
Параметр у Close - записывать изменения книги или нет.
У этого метода есть один недостаток: выбрав значение из списка, мы модифицируем книгу. Но, например, элемент управления ComboBox также её модифицирует. Способа от этого избавиться я пока не нашёл.
Если что-то неясно, обработка приложена.

Excel постобработка выпадающий список навигация поиск переход

См. также

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 руб.

29.10.2014    211468    630    526    

446

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 09.04.2024, версия 9.9 - 9.10)

14400 руб.

20.11.2015    151597    367    376    

503

Маркетплейсный загрузчик для 12-ти маркетплейсов в 1С:БП 3, УТ 11, КА 2, ERP, УНФ

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы сделаете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, "Детский мир", Казань-Экспресс, "Леруа Мерлен", ЭНФАНТА (Акушерство), ЛаМода, Летуаль, "Твой дом" в документы "Отчет комиссионера (агента) о продажах" и другие, может работать в "Бухгалтерия 3", "Бухгалтерия 3 КОРП", УТ 11, УНФ, КА 2, ERP. Возможность подключить любые маркетплейсы. Анализ продаж ОЗОН. 30 дней БЕСПЛАТНОГО пользования!

1800 руб.

12.08.2021    32452    249    65    

125

SALE! 30%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

6000 5520 руб.

04.06.2019    101975    298    173    

314

SALE! 20%

Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы

Загрузка и выгрузка в Excel Оптовая торговля Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 4000 руб.

09.11.2016    216228    935    886    

946

Загрузка данных отчета о реализации товаров из Excel файла СберМегаМаркет

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Загрузка данных отчета о реализации товаров из сервиса СберМегаМаркет для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11 и Управление нашей фирмой, редакция 3.0 в документ "Отчет комиссионера (агента) о продажах".

4800 руб.

07.06.2022    15435    82    0    

63
Оставьте свое сообщение