Имя: Пароль:
1C
1C 7.7
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
надо что=то типа

Лист.Range("H1:I1").Select();
ФЕ.Selection.Validation.Add(3,1,1,("=Я;В"));
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
всем спасибо! :)
2 + 2 = 3.9999999999999999999999999999999...