Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как в VBScript добавить проверку Excel список Validation / 8 сообщений из 8, страница 1 из 1
01.04.2008, 11:05
    #35226537
pazdak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в VBScript добавить проверку Excel список Validation
Помогите кто знает, как в VBScript ПРАВИЛЬНО использовать функцию Excel "Проверку данных" с условием проверки "Список"
Если сделать запись макроса, то получаем такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
With Selection.Validation 
        .Delete 
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
        xlBetween, Formula1:="=YESNO" 
        .IgnoreBlank = True 
        .InCellDropdown = True 
        .InputTitle = "" 
        .ErrorTitle = "" 
        .InputMessage = "" 
        .ErrorMessage = "" 
        .ShowInput = True 
        .ShowError = True 
End With 

Пытался это переписать на VBScript:

Создаем пространство имен YESNO: (создается как положено)
Код: plaintext
1.
2.
objSheet.Range("H100").FormulaR1C1="NO" 
objSheet.Range("H101").FormulaR1C1="YES" 
objXlsApp.ActiveWorkbook.Names.Add "YESNO", "=" & objSheet.Name & "!$H$100:$H$101" 
Далее добавляю саму проверку данных:
3 - xlValidateList
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
obrow = "A3" 
objSheet.Range(obrow).Validation.Delete 
objSheet.Range(obrow).Validation.Add  3 , 1 , 1 ,"=YESNO" 
objSheet.Range(obrow).Validation.IgnoreBlank = True 
objSheet.Range(obrow).Validation.InCellDropdown = True 
objSheet.Range(obrow).Validation.InputTitle = "" 
objSheet.Range(obrow).Validation.ErrorTitle = "" 
objSheet.Range(obrow).Validation.InputMessage = "" 
objSheet.Range(obrow).Validation.ErrorMessage = "" 
objSheet.Range(obrow).Validation.ShowInput = True 
objSheet.Range(obrow).Validation.ShowError = True 
На строке:
objSheet.Range(obrow).Validation.Add 3,1,1,"=YESNO"
дает ошибку err.Number = 1004 "Unknown error"

Бился по всякому, но не выходит каменный цветок
Прошу Вашей помощи
...
Рейтинг: 0 / 0
01.04.2008, 11:30
    #35226631
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в VBScript добавить проверку Excel список Validation
Код: plaintext
objSheet.Range(obrow).Validation.Add  3 , 1 , 1 ,"YESNO" 
...
Рейтинг: 0 / 0
01.04.2008, 14:28
    #35227363
pazdak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в VBScript добавить проверку Excel список Validation
Попробовал запустить скрипт на Excel 2003 SP2
В любом случае ошибка одна и таже на строке Validation.Add 3,1,1,"=YESNO" , не зависимо от того каково значение поля Formula1 ("YESNO", "=YESNO", "YES,NO", "YES;NO")
Error: -2147417851

Помогите...
...
Рейтинг: 0 / 0
01.04.2008, 19:07
    #35228334
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в VBScript добавить проверку Excel список Validation
Скрипт полностью правильный. Во всяком случае на 2003 SP3 отработало идеально.
...
Рейтинг: 0 / 0
02.04.2008, 18:25
    #35230992
pazdak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в VBScript добавить проверку Excel список Validation
White OwlСкрипт полностью правильный. Во всяком случае на 2003 SP3 отработало идеально.
Можно ли выложить то что у Вас отработало (полностью фрагмент), попробую у себя запустить, может у меня просто руки кривые...
...
Рейтинг: 0 / 0
02.04.2008, 19:55
    #35231173
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в VBScript добавить проверку Excel список Validation
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
dim oExcel, oWS, obrow

set oExcel = CreateObject("Excel.Application")
oExcel.Visible = true
oExcel.Workbooks.Add
set oWS = oExcel.ActiveSheet

oWS.Range("H100").FormulaR1C1="NO" 
oWS.Range("H101").FormulaR1C1="YES" 
oExcel.ActiveWorkbook.Names.Add "YESNO", "=" & oWS.Name & "!$H$100:$H$101" 

obrow = "A3" 
oWS.Range(obrow).Validation.Delete 
oWS.Range(obrow).Validation.Add  3 , 1 , 1 ,"=YESNO" 
oWS.Range(obrow).Validation.IgnoreBlank = True 
oWS.Range(obrow).Validation.InCellDropdown = True 
oWS.Range(obrow).Validation.InputTitle = "" 
oWS.Range(obrow).Validation.ErrorTitle = "" 
oWS.Range(obrow).Validation.InputMessage = "" 
oWS.Range(obrow).Validation.ErrorMessage = "" 
oWS.Range(obrow).Validation.ShowInput = True 
oWS.Range(obrow).Validation.ShowError = True 
...
Рейтинг: 0 / 0
03.04.2008, 15:28
    #35233355
pazdak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в VBScript добавить проверку Excel список Validation
White Owl
Да действительно работает Ваш пример, а мой нет!

Вся разница в том что у меня новый документ создается так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    Set objExcel = CREATEOBJECT("Excel.Application")
    Set objXlsApp = objExcel.Application
    objXlsApp.workbooks.add()
    Set objSheet = objXlsApp.ActiveSheet
    objXlsApp.activewindow.WindowState = xlMinimized
    
    objXlsApp.Visible = False
    objXlsApp.ScreenUpdating = False
    objXlsApp.DisplayAlerts = False
После долгих мытарств выяснил, что строка:
Код: plaintext
objXlsApp.activewindow.WindowState = xlMinimized
Оказывается влияет пагубно на добавление проверки данных, после того как закоментировал ее, все наконец-то заработало
Спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
29.05.2013, 10:31
    #38277943
gortol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в VBScript добавить проверку Excel список Validation
к сожалению никакой управы на этот validation я тоже не нашёл, те если вообще никакой проверки не ставить на ячейке - то при чтении свойства Validation будет 100% ошибка, а если поставить что длина текста >0 и разрешить пустые значения на все ячейки - тогда validation срабатывает, но вот как проверить - существует ли это свойство в коллекции range?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как в VBScript добавить проверку Excel список Validation / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]