![]() |
|
v7: Помогите создать выпадающий список в экселе через ОЛЕ. | ☑ | ||
---|---|---|---|---|
0
Толич
29.09.11
✎
09:11
|
День добрый.
Не могу понять как сделать из 1С в таблице эксель в ячейке выпадающий список. На данный момент выделил область листа и обозвал ее. Дальше не могу разобраться как это можно сделать из 1С не используя скрипт. Вот код... Лист = ExcelApp.Sheets.Add(); //создаем лист с вспомогательной информацией для заполнения списков Лист.Name = "MVZ"; //обзываем лист //Удаляем нафиг лишние листы. Нам нужен только 1-й и 2-й лист в книге Пока ExcelApp.Worksheets.Count>2 Цикл //удаляем все листы, кроме первого и второго ExcelApp.Sheets(3).Delete(); КонецЦикла; //Поменяем местами 1-й и 2-й лист в книге, так красивЕЕ ExcelApp.Sheets(2).Select(); ExcelApp.Sheets(ExcelApp.Sheets.Count).Move(ExcelApp.Sheets(ExcelApp.Sheets.Count-1)); ExcelApp.Sheets(2).Select(); нн = 0; //заполним на втором листе информацию для списков СпрСЗ = СоздатьОбъект("Справочник.СтатьиЗатрат"); СпрСЗ.ВыбратьЭлементы(); Пока СпрСЗ.ПолучитьЭлемент() = 1 Цикл Если СпрСЗ.ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; нн = нн + 1; RangeSelect = ExcelApp.Range(ExcelApp.Cells(НН, 1), ExcelApp.Cells(НН, 1)); RangeSelect.FormulaR1C1 = СпрСЗ.Наименование; КонецЦикла; //Обзавем и выделим область для списка ActiveWorkbook = ExcelApp.ActiveWorkbook(); ActiveWorkbook.Names.Add("MV", "=MVZ!R1C1:R" + СокрЛП(НН) + "C1"); ExcelApp.Sheets(1).Select(); //здесь надо добавить в ячейку выпадающий список. ФайлXLS.Save(); Спасибо. |
|||
1
Толич
29.09.11
✎
09:32
|
В скрипте добавление выглядит приблизительно так...
... ADDR = Range("MVZ!$C$1").FormulaR1C1 //здесь лежит адрес ячеек, которых требуется добавить в список With Selection .ListFillRange = ADDR .LinkedCell = "$Z$19" .DropDownLines = 8 .Display3DShading = False End With Range("Z19:Z19").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With |
|||
2
Толич
29.09.11
✎
10:26
|
ап
|
|||
3
Толич
29.09.11
✎
10:34
|
т.е. мне нужно узнать как можно реализовать в 1С, то что в макросе выглядит как
ActiveSheet.DropDowns.Add(735.5, 308.25, 203.25, 15.75).Select |
|||
4
Толич
29.09.11
✎
11:37
|
Строка
ActiveSheet.DropDowns.Add(735.5, 308.25, 203.25, 15.75); Добавляет список в лист эксель. Вопрос как передать этому элементу (списку) значения, которые он должен отображать. |
|||
5
Толич
29.09.11
✎
15:00
|
Решение если вдруг кому понадобится:
ActiveWorkbook = ExcelApp.ActiveWorkbook(); ActiveWorkbook.Names.Add("MV", "=MVZ!R1C1:R" + СокрЛП(НН) + "C1"); ExcelApp.Sheets(1).Select(); СписокМВЗ = ExcelApp.ActiveSheet.DropDowns.Add(1322, 90, 100, 100); СписокМВЗ.ListFillRange ="MVZ!R1C1:R" + СокрЛП(НН) + "C1";//"$Лист1!R44C4:R44C4"; СписокМВЗ.DropDownLines = 8; СписокМВЗ.Display3DShading = 0; ФайлXLS.Save(); Поговорил сам с собой... |
|||
6
filh
29.09.11
✎
15:08
|
приходи еще.
|
|||
7
Толич
29.09.11
✎
15:15
|
То есть так
ActiveWorkbook = ExcelApp.ActiveWorkbook(); ActiveWorkbook.Names.Add("MV", "=MVZ!R1C1:R" + СокрЛП(НН) + "C1"); ExcelApp.Sheets(1).Select(); СписокМВЗ = ExcelApp.ActiveSheet.DropDowns.Add(1322, 94, 100, 100); СписокМВЗ.ListFillRange ="MV"; СписокМВЗ.DropDownLines = 8; СписокМВЗ.Display3DShading = 0; |
|||
8
FN
29.09.11
✎
15:15
|
(5) еще можно через Validation - будет и список, и заодно проверка введенных значений
Ексель.Range(Область).Validation.Add(3,1,1,("="+ОбластьЗначений)); Ексель.Range(Область).Validation.IgnoreBlank=1; Ексель.Range(Область).Validation.InCellDropdown=1; Ексель.Range(Область).Validation.ShowInput=0; Ексель.Range(Область).Validation.ShowError=1; Область - куда цеплять список ОбластьЗначений - сам список |
|||
9
FN
29.09.11
✎
15:18
|
(8)+ ОбластьЗначений="$"+ПолучитьНазваниеКолонки(номерКолонки)+"$"+Строка(начальныйНомерСтроки)+":"+"$"+ПолучитьНазваниеКолонки(номерКолонкиок)+"$"+Строка(КонечныйНомерСтроки);
//Функция возвращает буквенный код столбца по его номеру Функция ПолучитьНазваниеКолонки(Знач ном) //от 1 до 255 ном=Макс(1,Мин(ном,255)); //ограничим ном=ном-1; ПоследнийСимвол=Симв(65+(ном%26)); ПервыйСимвол=?(Цел(ном/26)=0,"",Симв(64+Цел(ном/26))); Возврат(ПервыйСимвол+ПоследнийСимвол); КонецФункции |
|||
10
Толич
29.09.11
✎
15:48
|
(9) Попробывал
//Обзавем и выделим область для списка ActiveWorkbook = ExcelApp.ActiveWorkbook(); ActiveWorkbook.Names.Add("MV", "=MVZ!R1C1:R" + СокрЛП(НН) + "C1"); ExcelApp.Sheets(1).Select(); ExcelApp.Range(ExcelApp.Cells(44, 5), ExcelApp.Cells(44, 5)).Validation.Add(3,1,1,"MV"); ExcelApp.Range(ExcelApp.Cells(44, 5), ExcelApp.Cells(44, 5)).Validation.IgnoreBlank=1; ExcelApp.Range(ExcelApp.Cells(44, 5), ExcelApp.Cells(44, 5)).Validation.InCellDropdown=1; ExcelApp.Range(ExcelApp.Cells(44, 5), ExcelApp.Cells(44, 5)).Validation.ShowInput=0; ExcelApp.Range(ExcelApp.Cells(44, 5), ExcelApp.Cells(44, 5)).Validation.ShowError=1; На листе не видно этого списка вообще. Что я делаю не так? |
|||
11
FN
29.09.11
✎
21:41
|
=MV
|
|||
12
Толич
29.09.11
✎
22:08
|
(11) Побывал. Область ExcelApp.Cells(44, 5) после этого ничем не отличается от обычной ячейки. =(
Excel 2007 |
|||
13
FN
29.09.11
✎
22:56
|
http://infostart.ru/public/16140/
давненько писал - там это есть. Можешь попробовать под себя причесать |
|||
14
Толич
30.09.11
✎
09:32
|
(13) Спасибо.
Дело было в неправильном объявлении Области как то так //Обзавем и выделим область для списка ActiveWorkbook = ExcelApp.ActiveWorkbook(); ActiveWorkbook.Names.Add("MV", "=MVZ!R1C1:R" + СокрЛП(НН) + "C1"); ОбластьЗначений="$"+ПолучитьНазваниеКолонки(44)+"$"+Строка(5)+":"+"$"+ПолучитьНазваниеКолонки(44)+"$"+Строка(7); ExcelApp.Sheets(1).Select(); ExcelApp.Range("AR4:AR500").Validation.Add(3,1,1,("=MV")); ExcelApp.Range("AR4:AR500").Validation.IgnoreBlank=1; ExcelApp.Range("AR4:AR500").Validation.InCellDropdown=1; ExcelApp.Range("AR4:AR500").Validation.ShowInput=0; ExcelApp.Range("AR4:AR500").Validation.ShowError=1; |
|||
15
Толич
30.09.11
✎
09:33
|
(14) В смысле так правильно надо было объявлять область...
|
|||
16
FN
30.09.11
✎
10:06
|
(14) Рад, если смог помочь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |