|
v7: Excel OLE выпадающий список | ☑ | ||
---|---|---|---|---|
0
pavlo
24.07.12
✎
14:47
|
Народ, как можно организовать при заполнении екселя выпадающий список, в VBA выглядит так, это ячейка в которой четко выбор пару значений, значения константные, тоесть не меняющиеся и не берущиеся из других ячеек.
With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="Я;В" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With Range("E9").Select Как бы это реализовать в 1с? сейчас есть такое и выдает ошибку :( ФЕ=СоздатьОбъект("Excel.Application"); РКнига=ФЕ.WorkBooks; РКнига.Open(ИмяФайла,0); ФЕ.Visible=0; ФЕ.DisplayAlerts=0; ФЕ.ScreenUpdating=0; ФЕ.EnableEvents=0; Лист=ФЕ.WorkSheets(1); Лист.Range("H1:I1").Validation.Add(3,1,1,("=Я;В")); - ошибку выдает Add походу не знает. и пробовал толку нет. Лист.Cells(1,1).Validation.Add(3,1,1,("=Я;В")); |
|||
1
ЧеловекДуши
25.07.12
✎
08:14
|
Что за ошибка?
Текст ошибки покажи? Покажи так же полный код, то строчки "Лист.Range("H1:I1").Validation.Add(3,1,1,("=Я;В")); " нет |
|||
2
pavlo
25.07.12
✎
09:31
|
(1) чаще всего пишет так
Лист.Cells(1,1).Validation.Add(3,1,1,("=Я;В")); {C:\EXCEL_CПИСКИ.ERT(14)}: : но опытным путем с таким же почти кодом в 8.1 пишет следующее... Что метод Add не найден. выше почти весь полный код :) ну вот весь. Процедура Сформировать() ИмяФайла="c:\1.xls"; ФЕ=СоздатьОбъект("Excel.Application"); ФЕ.SheetsInNewWorkbook=1;// один лист в книге РКнига=ФЕ.WorkBooks.Add();//Новая Книга //РКнига.Open(ИмяФайла,0); ФЕ.Visible=0; ФЕ.DisplayAlerts=0; ФЕ.ScreenUpdating=0; ФЕ.EnableEvents=0; Лист=ФЕ.WorkSheets(1); Лист.Cells(1,1).Validation.Add(3,1,1,("=Я;В")); ФЕ.DisplayAlerts=0; ФЕ.ActiveWorkbook.SaveAs(ИмяФайла); ФЕ.DisplayAlerts=1; ФЕ.Visible=1; ФЕ.ScreenUpdating=1; ФЕ.EnableEvents=1; ФЕ.Quit(); ФЕ=0; КонецПроцедуры |
|||
3
pavlo
25.07.12
✎
09:33
|
Лист.Range("H1:I1").Validation.Add(3,1,1,("=Я;В"));
{C:\EXCEL_CПИСКИ.ERT(15)}: : Процедура Сформировать() ИмяФайла="c:\1.xls"; ФЕ=СоздатьОбъект("Excel.Application"); ФЕ.SheetsInNewWorkbook=1;// один лист в книге РКнига=ФЕ.WorkBooks.Add();//Новая Книга //РКнига.Open(ИмяФайла,0); ФЕ.Visible=0; ФЕ.DisplayAlerts=0; ФЕ.ScreenUpdating=0; ФЕ.EnableEvents=0; Лист=ФЕ.WorkSheets(1); //Лист.Cells(1,1).Validation.Add(3,1,1,("=Я;В")); Лист.Range("H1:I1").Validation.Add(3,1,1,("=Я;В")); ФЕ.DisplayAlerts=0; ФЕ.ActiveWorkbook.SaveAs(ИмяФайла); ФЕ.DisplayAlerts=1; ФЕ.Visible=1; ФЕ.ScreenUpdating=1; ФЕ.EnableEvents=1; ФЕ.Quit(); ФЕ=0; КонецПроцедуры |
|||
4
dk
25.07.12
✎
09:35
|
Селекта не хватает
|
|||
5
dk
25.07.12
✎
09:36
|
надо что=то типа
|
|||
6
dk
25.07.12
✎
09:41
|
хотя справка говорит что через range должно работать
|
|||
7
pavlo
25.07.12
✎
10:04
|
(6) про select() пробовал, особенно понятно что нужно в Cells() но ошибки все теже абсолютно :(
|
|||
8
pavlo
25.07.12
✎
10:29
|
ТипЗначенияСтр(Лист.Cells(1,1)) = "OLE.Range"
|
|||
9
pavlo
25.07.12
✎
10:30
|
ТипЗначенияСтр(Лист.Cells(1,1).Validation) = "OLE.Validation"
|
|||
10
pavlo
25.07.12
✎
10:31
|
а вот не смотря на MSDN метода add() не знает :(
|
|||
11
pavlo
25.07.12
✎
10:35
|
причем даже свойств типа нет у Validation
err: Лист.Range("H1:I1").Validation.IgnoreBlank=1; {C:\EXCEL_CПИСКИ.ERT(19)}: : |
|||
12
pavlo
25.07.12
✎
11:33
|
код на VBS тоже самое не может создать, что могут макросы екселя :(
Set oExcel = CreateObject("Excel.Application") 'If oExcel Is Nothing Then Exit Function ' В новой рабочей книге создавать только один рабочий лист oExcel.SheetsInNewWorkbook = 1 Set oBook = oExcel.Workbooks.Add 'If oBook Is Nothing Then Exit Function Set oSheet = oExcel.WorkSheets(1) ' If vbNullString = Dir(sDirName, vbDirectory) Then Exit Function set cell =oSheet.Range("A1") cell.Validation.Add(3,1,1,("=Я;В")) ' вот тут все равно ошибка :( ' Сохраняем книгу oBook.SaveAs "c:\2.xlsx" CreateXlBook = True ' Освобождение памяти Set oSheet = Nothing Set oBook = Nothing oExcel.Quit Set oExcel = Nothing |
|||
13
ЧеловекДуши
25.07.12
✎
11:37
|
Странно, но везде с начала стоит Делет
With Range("A1").Validation .Delete .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:="4", Formula2:="6" |
|||
14
ЧеловекДуши
25.07.12
✎
11:42
|
+(12)
http://www.automateexcel.com/2004/08/14/title/ How do you add the line to what I am trying to write? Set objExcelApp1 = CreateObject(“Excel.Application”) objExcelApp1.Workbooks.Open “L:\DEPT1\D030B\Financial Compliance Team\State Reporting\Automated Form and Emailer\State of Maine 2008 Report Files\Me Template”, , False Set objExcelBook1 = objExcelApp1.ActiveWorkbook Set objExcelSheets1 = objExcelBook1.Worksheets Set objexcelsheet1 = objExcelBook1.Sheets(1) Set objSelection = objSelection.Validation objexcelsheet1.Activate Choices = “APRN, CRNA, CRNP, DDS, DO, DPM, DVM, MD, ND, NP, OD, PA, RN, Health Plans & Benefit Managers, Nursing Home Administrators, Pharmacists, Pharmacy Technicians, Psychologists, Veterinary Technicians, other” objexcelsheet1.Range(“a14?).Select objexcelsheet1.Range(“a14?).PasteSpecial objexcelsheet1.Rows(“14?).Select objexcelsheet1.Rows(“14?).Delete objexcelsheet1.Range(“r17:r2000?).Select With objSelection .Delete .Add Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=Choices .IgnoreBlank = True .InCellDropdown = True .InputTitle = “” .ErrorTitle = “” .InputMessage = “” .ErrorMessage = “” .ShowInput = True .ShowError = True End With |
|||
15
pavlo
25.07.12
✎
12:01
|
оставляю на память кому понадобиться, вот это рабочее
Процедура Сформировать() ИмяФайла="c:\1.xls"; ФЕ=СоздатьОбъект("Excel.Application"); ФЕ.SheetsInNewWorkbook=1;// один лист в книге РКнига=ФЕ.WorkBooks.Add();//Новая Книга //РКнига.Open(ИмяФайла,0); ФЕ.Visible=0; ФЕ.DisplayAlerts=0; ФЕ.ScreenUpdating=0; ФЕ.EnableEvents=0; Лист=ФЕ.WorkSheets(1); //Лист.Range("H100").FormulaR1C1="Я"; если нужно составить список не на лету а из данных ячеек //Лист.Range("H101").FormulaR1C1="В"; если нужно составить список не на лету а из данных ячеек //ФЕ.ActiveWorkbook.Names.Add("ЯВ", "=$H$100:$H$101"); если нужно составить список не на лету а из данных ячеек Лист.Cells(1,1).Validation.Add(3,1,1,("Я;В")); Лист.Cells(1,1).Validation.IgnoreBlank=1; Лист.Cells(1,1).Validation.InCellDropdown=1; Лист.Cells(1,1).Validation.ShowInput=0; Лист.Cells(1,1).Validation.ShowError=1; //Лист.Range("A1").Validation.Add(3,1,1,("=Я;В")); ФЕ.DisplayAlerts=0; ФЕ.ActiveWorkbook.SaveAs(ИмяФайла); ФЕ.DisplayAlerts=1; ФЕ.Visible=1; ФЕ.ScreenUpdating=1; ФЕ.EnableEvents=1; ФЕ.Quit(); ФЕ=0; КонецПроцедуры |
|||
16
pavlo
25.07.12
✎
12:01
|
всем спасибо! :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |