"отловить" ошибку в эксель.

1. forev8 17.02.12 16:31 Сейчас в теме
Суть проблемы:

При считывании данных эксель в 1с программа валится если в ячейке эксель есть ошибка #Ccылка!
Вопрос-можно ли отловть ее при считывании или нет..

Конструкция Попытка-Исключение естественно не помогает.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dusha0020 1118 17.02.12 17:58 Сейчас в теме
(1) forev8, Я Вот сегодня не мог передать булево в Эксель, тоже все валилось. Ну и написал в vbs то что нужно с On Error Resume Next. Может и Вам так попробовать собрать не в 1С? Собственно пассаж мой для образца (он правда не читает данные, а страницу форматирует).
Функция УстановитьПараметрыПечатиЭксель(ИмяФайла,Ширина,Высота)
	скр = СоздатьОбъект("MSScriptControl.ScriptControl");
	скр.Language="vbscript";
	скрТекст = "
	|On Error Resume Next
	|Function PrnSet(File,Wd,Ln)
	|Set XL = CreateObject(""Excel.Application"")
	|XL.DisplayAlerts=False
	|Set Rep = XL.WorkBooks.Open(File)
	|Set Sh = Rep.WorkSheets(1)
	|Sh.PageSetup.Zoom = False
	|Sh.PageSetup.FitToPagesWide = Wd
	|Sh.PageSetup.FitToPagesTall = Ln
	|Sh.PageSetup.LeftMargin = XL.CentimetersToPoints(1.5)
	|Sh.PageSetup.TopMargin = XL.CentimetersToPoints(1) 
	|Sh.PageSetup.RightMargin = XL.CentimetersToPoints(1) 
	|Sh.PageSetup.BottomMargin = XL.CentimetersToPoints(1)
	|Rep.SaveAs File, 1
	|XL.DisplayAlerts= 1
	|XL.Quit()
	|If err.Number = 0 Then
	|	PrnSet = 1
	|else
	|	PrnSet = 0
	|	XL.Quit()
	|End If
	|End Function
	|";
	скр = СоздатьОбъект("MSScriptControl.ScriptControl");
	скр.Language="vbscript";
	скр.AddCode(скрТекст);
    Возврат скр.Modules("Global").CodeObject.PrnSet(ИмяФайла,Ширина,Высота);

КонецФункции
Показать
3. Pari 17.02.12 20:26 Сейчас в теме
При считывании данных эксель в 1с программа валится если в ячейке эксель есть ошибка #Ccылка!
Вопрос-можно ли отловть ее при считывании или нет..

(1) forev8, попробуй такой вариант (код взят у vde69)
ТекущееЗначениеФормулы = ExcelЛист.Cells(1, 1).Formula;
Если ТекущееЗначениеФормулы <> "" Тогда
    Если Лев(ТекущееЗначениеФормулы, 1) <> "=" Тогда 
        Если (Лев(ExcelЛист.Cells(1,1).text,1) = "#" Тогда                        
 
            // ошибка
 
        Иначе
            // можно читать value
 
        КонецЕсли; 
    КонецЕсли;   
КонецЕсли;
Показать
5. andy2011 22.02.12 14:55 Сейчас в теме
(1) forev8,
вот примерный рабочий код :

db=CreateObject("ADODB.Connection");
rs=CreateObject("ADODB.Recordset");
db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+имя_файла+";Extended Properties=""Excel 8.0;""";
db.Open();
rs.ActiveConnection = db;
rs.CursorType = 3;
rs.LockType = 2;
//
rs.Source = "Select * from ["+Лист_файла+"$]";
rs.Open();
fld_cnt = rs.Fields.Count ;
status("Обработка файла >> "+ имя_файла + " ...") ;

fstart=0 ;
while rs.Eof()=0 do
//
ss = trimall(rs.Fields(0).Value) ; // c_1
// делаем то_что_надо
rs.MoveNext();
enddo ;
//
rs.Close();
db.Close();
4. ra9000 12 18.02.12 00:42 Сейчас в теме
Проверка на значение в ячейке,
получение через параметр ошибок.
См справку по VBA
dicwork; dusha0020; +2 Ответить
6. forev8 28.02.12 18:56 Сейчас в теме
Благодарю.Будем пробовать различные варианты
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот