powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / range.validation
6 сообщений из 6, страница 1 из 1
range.validation
    #35130502
Bora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Не подскажите, как можно из vb.net определить используется ли для ячейки проверка данных или нет?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
        Dim xlApp As Microsoft.Office.Interop.Excel.Application
        Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
        Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet
        Dim xlRange1 As Microsoft.Office.Interop.Excel.Range
 
        Try

            xlApp = CType(CreateObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application)
            xlBook = CType(xlApp.Workbooks.Open("c:\test4.xls"), Microsoft.Office.Interop.Excel.Workbook)

            xlSheet = CType(xlBook.Worksheets( 1 ), Microsoft.Office.Interop.Excel.Worksheet)

            xlRange1 = CType(xlSheet.Cells( 1 ,  1 ), Microsoft.Office.Interop.Excel.Range)

            If IsDBNull(xlRange1.Validation.Type) Then System.Console.WriteLine("xlRange1.Validation is null!")
            If IsNothing(xlRange1.Validation.Type) Then System.Console.WriteLine("xlRange1.Validation is nothing!")

            xlBook.Close()

        Catch ex As Exception
            MsgBox(ex.ToString)

        End Try

в обоих случаях вылетает ошибка, а если просто писать

Код: plaintext
1.
2.
     If IsDBNull(xlRange1.Validation) Then System.Console.WriteLine("xlRange1.Validation is null!")
     If IsNothing(xlRange1.Validation) Then System.Console.WriteLine("xlRange1.Validation is nothing!")

то в обоих случаях выдает FALSE
...
Рейтинг: 0 / 0
range.validation
    #35131193
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем проверяете xlRange1.Validation.Type ? Достаточно проверить xlRange1.Validation .
xlApp тоже надо закрывать. Через Quit.
Какая ошибка вылетает ?
...
Рейтинг: 0 / 0
range.validation
    #35132099
Bora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том что, как я понял, объект Range.Validation существует всегда, независимо от того установлена проверка данных для диапазона или нет.

При проверки с помощью свойства Validation.Type вылетает ошибка System.Runtime.InteropServices.COMException(0x800A03EC): Исключение из HRESULT: 0x800A03EC

А xlApp.Quit() закрывает окно Excel, а так как я его не открываю с помощью xlApp.Visible = true, то по-моему и закрывать не нужно.
Я пробовал использовать Quit, когда хотел чтобы Excel из процессов вырубался. Но это не помогает, и из процессов excel исчезает только после завершения работы приложения.
...
Рейтинг: 0 / 0
range.validation
    #35133781
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoraА xlApp.Quit() закрывает окно Excel, а так как я его не открываю с помощью xlApp.Visible = true, то по-моему и закрывать не нужно.Неправда. Сразу после того как ты создал объект
xlApp = CType(CreateObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application)
У тебя в памяти возникла копия Экселя. Не важно видима она или невидима.
Эта копия будет висеть в памяти и жрать ресурсы до тех пор пока ты не скажешь этой копии xlApp.Quit и вызовешь деструктор для объекта xlApp. На чем ты пишешь, на VB.Net? Тогда сделай:
Код: plaintext
1.
xlApp.Quit 
xlApp = Nothing
И ненужная копия Экселя исчезнет из памяти.

BoraЯ пробовал использовать Quit, когда хотел чтобы Excel из процессов вырубался. Но это не помогает, и из процессов excel исчезает только после завершения работы приложения.Это все от невнимательности.
...
Рейтинг: 0 / 0
range.validation
    #35136440
Bora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал
Код: plaintext
1.
2.
xlApp.Quit 
xlApp = Nothing
все равно в процессах висит пока приложение не закроешь.
...
Рейтинг: 0 / 0
range.validation
    #35136453
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BoraСделал
Код: plaintext
1.
2.
xlApp.Quit 
xlApp = Nothing
все равно в процессах висит пока приложение не закроешь.Хорошо, сделай сразу после создания xlApp, xlApp.Visible = true и понаблюдай за поведением запускаемого экселя.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / range.validation
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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