|
Ошибка при закрытии объекта Excel | ☑ | ||
---|---|---|---|---|
0
moonlight
22.02.17
✎
20:27
|
Добрый день!
Есть процедура, которая закрывается перед закрытием формы Процедура ЗакрытьФайл() Если Excel<>Неопределено тогда Excel.ActiveWorkbook.Close(False); Excel.Quit(); КонецЕсли; КонецПроцедуры форма закрывается без ошибок, Excel удаляется из процессов. При выборе в форме другого файла я хочу также закрыть текущую книгу и вызываю эту же процедуру: ЗакрытьФайл() Процедура ПутьКФайлуНачалоВыбора(Элемент, СтандартнаяОбработка) ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбора.Заголовок = "Выберите файл"; Если ДиалогВыбора.Выбрать() Тогда ПутьКФайлу = ДиалогВыбора.ПолноеИмяФайла; ЗакрытьФайл(); ОткрытьФайл(); ЛистыПриИзменении(ЭлементыФормы.Листы); Иначе Возврат; КонецЕсли; КонецПроцедуры Процедура ОткрытьФайл() //подключаемся к Excel Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.WorkBooks.Open(ПутьКФайлу); Состояние("Обработка файла Microsoft Excel..."); Исключение Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!"); Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; ЭлементыФормы.Листы.СписокВыбора.Очистить(); Для нл=1 по Excel.Sheets().Count цикл Если Excel.Sheets(нл).Visible тогда ЭлементыФормы.Листы.СписокВыбора.Добавить(нл,Excel.Sheets(нл).Name); КонецЕсли; КонецЦикла; ЭлементыФормы.Листы.Значение=1; КонецПроцедуры и получаю ошибку http://clip2net.com/s/3HNBn16 Самое интересное, что если иду мониторю отладчиком то проходит код процедуры ЗакрытьФайл() без ошибок. В чем ошибка? |
|||
1
Мимохожий Однако
22.02.17
✎
20:31
|
Если встать на строку с ошибкой, что вычисляется? Может быть, там уже другой значение, которое ты не ожидаешь
|
|||
2
Fram
22.02.17
✎
20:31
|
(0) а при выборе первого файла после открытия формы ты что пытаешься закрыть?
|
|||
3
moonlight
22.02.17
✎
20:39
|
(2)
Нет! я моделирую ситуацию если пользователь не тот файл выбрал и выбирает другой, поэтому я хочу закрыть открытый файл |
|||
4
moonlight
22.02.17
✎
20:40
|
(1) ка и надо ComObject со свойством ActiveWorkbook
|
|||
5
Fram
22.02.17
✎
20:45
|
(3) если ты на вопрос Что отвечаешь Нет, то диалога у нас не получится
|
|||
6
moonlight
22.02.17
✎
20:46
|
(5) пытаюсь закрыть открытый файл )
|
|||
7
Fram
22.02.17
✎
20:47
|
по другом спрошу.. когда ты только открыл свою форму и первый раз выбрал файл, у Excel.ActiveWorkbook какое значение будет?
|
|||
8
Fram
22.02.17
✎
20:51
|
(6) откуда открытый файл если ты только что открыл форму? у тебя в ПриОткрытии какой то файл открывается?
|
|||
9
moonlight
22.02.17
✎
20:52
|
||||
10
moonlight
22.02.17
✎
20:52
|
(8) когда я выбираю файл то при событии выбора в поле вызывается процедура ОткрытьФайл()
|
|||
11
Fram
22.02.17
✎
20:54
|
(10) а это что?
Если ДиалогВыбора.Выбрать() Тогда ПутьКФайлу = ДиалогВыбора.ПолноеИмяФайла; ------> ЗакрытьФайл(); ОткрытьФайл(); |
|||
12
moonlight
22.02.17
✎
20:56
|
(11)
при первом открытии в переменной Excel ничего нет поэтому при первом вызове ЗакрытьФайл() там условие на НЕОПРЕДЕЛЕНО |
|||
13
moonlight
22.02.17
✎
20:58
|
||||
14
Fram
22.02.17
✎
21:01
|
(13) ты лучше отладчик там останови и посмотри Excel.ActiveWorkbook
|
|||
15
moonlight
22.02.17
✎
21:06
|
(14) Неопределено
|
|||
16
Fram
22.02.17
✎
21:09
|
(15) еще вопросы есть?
|
|||
17
moonlight
22.02.17
✎
21:13
|
(16)конечно! Почему если я закрываю форму а не выбираю другой файл эта процедура не выдает ошибок и привыборе в поле пути другого файла Excel.ActiveWorkbook=Неопределено?
|
|||
18
moonlight
22.02.17
✎
21:16
|
Если процедуру ЗакрытьФайл() ставлю перед выбором файла
ЗакрытьФайл(); Если ДиалогВыбора.Выбрать() Тогда Попытка ..... тогда все работает. В процедуре Открыть файл где ссылка на поле ПутьКФайлу используется в методе Open() Процедура ОткрытьФайл() //подключаемся к Excel Попытка Excel = Новый COMОбъект("Excel.Application"); Excel.WorkBooks.Open(ПутьКФайлу); Состояние("Обработка файла Microsoft Excel..."); ///// Думаю в этом проблема |
|||
19
Fram
22.02.17
✎
21:23
|
(18) не вижу разницы с (0)
и не понял вторую часть твоего поста про ОткрытьФайл. это к чему? |
|||
20
Fram
22.02.17
✎
21:26
|
исходя из того что выложил сюда ошибка твоя по логике вылезает когда предыдущий файл по какой то причине не смог открыться. то есть объект Excel создался а Open не сработал. тогда ActiveWorkbook будет неопределен
|
|||
21
moonlight
22.02.17
✎
21:27
|
(19) вот так ошибка
http://clip2net.com/s/3HNIqC5 а вот так нет ошибки http://clip2net.com/s/3HNIwJB |
|||
22
Fram
22.02.17
✎
21:34
|
(21) бред!
к тому же 2ой вариант точно должен выдать ActiveWorkbook = неопределено, если 2 раза подряд пользователь нажмет отмену в диалоге выбора файла |
|||
23
Fram
22.02.17
✎
21:44
|
кароч не парь моск ни нам ни себе. добавь еще одну проверку и вопрос закрыт
Если Excel<>Неопределено И Excel.ActiveWorkbook<>Неопределено Тогда ... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |