Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(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(ИмяФайла,Ширина,Высота);
КонецФункции
ПоказатьПри считывании данных эксель в 1с программа валится если в ячейке эксель есть ошибка #Ccылка!
Вопрос-можно ли отловть ее при считывании или нет..
Вопрос-можно ли отловть ее при считывании или нет..
(1) forev8, попробуй такой вариант (код взят у vde69)
ТекущееЗначениеФормулы = ExcelЛист.Cells(1, 1).Formula;
Если ТекущееЗначениеФормулы <> "" Тогда
Если Лев(ТекущееЗначениеФормулы, 1) <> "=" Тогда
Если (Лев(ExcelЛист.Cells(1,1).text,1) = "#" Тогда
// ошибка
Иначе
// можно читать value
КонецЕсли;
КонецЕсли;
КонецЕсли;
Показать
(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();
вот примерный рабочий код :
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();
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот