Маленькие хитрости при работе с Excel
Как при работе с Excel через OLE обойти предупреждения Excel требует подтверждений пользователя, например, при удалении листа из рабочей книги. При этом процесс обработки останавливается. Как сделать чтобы он не задавал таких вопросов?
Эксель = СоздатьОбъект(“Excel.Application”); ..... Эксель.DisplayAlerts = 0; .....// а здесь делаешь что-нибудь Эксель.DisplayAlerts = 1;
Формат числа при выгрузке в Excel При выгрузке данных в Excel числа типа 9237642437 отображаются 9,23764Е+11. Есть такая фича у Excel: если перед числом (или другим значением) поставить апостроф (’), эксель это понимает как то, что ему подсовывают текст, а апостроф отображаться не будет, т.е. напиши так: ’9237642437
Для того, чтобы открыть файл *.mxl в Excel Необходимо внести в реестр следующую информацию: REGEDIT [HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Converters] “Moxel”=“1С:Предприятие (*.mxl),...\\bin\\mxl2xl.dll, *.mxl” где: <...> это путь к каталогу 1С-Предприятия <10.0> это номер версии Экселя – XP. Для 2000 это будет 9.0, 97 – 8.0, 95 – 7.0
Как определить, когда закончились данные на листе при загрузке данных из Excel SpecialCells(11) – “последняя” ячейка Например, если нужен номер строки последней ячейки, то LastRow=ExcelApp.Cells(1,1).SpecialCells(11).Row;
Обработка ошибочных значений При обработке через OLE ячеек, содержащих ошибочные значения (#ДЕЛ/0!; #ЗНАЧ!; #ЧИСЛО! и т.п.) 1С зависает при обращении к свойству Value – не помогает даже конструкция Попытка – Исключение. Обойти эту неприятность можно очень просто – проверять перед обращением к Value свойство Text:
СписокОшибокЁкселя=СоздатьОбъект(“СписокЗначений”); СписокОшибокЁкселя.ДобавитьЗначение(”#ПУСТО!”); СписокОшибокЁкселя.ДобавитьЗначение(”#ДЕЛ/0!”); СписокОшибокЁкселя.ДобавитьЗначение(”#ЗНАЧ!”); СписокОшибокЁкселя.ДобавитьЗначение(”#ССЫЛКА!”); СписокОшибокЁкселя.ДобавитьЗначение(”#ИМЯ?”); СписокОшибокЁкселя.ДобавитьЗначение(”#ЧИСЛО!”); СписокОшибокЁкселя.ДобавитьЗначение(”#Н/Д”);
//Для англ. версии СписокОшибокЁкселя.ДобавитьЗначение(”#NULL!”); СписокОшибокЁкселя.ДобавитьЗначение(”#DIV/0!”); СписокОшибокЁкселя.ДобавитьЗначение(”#VALUE!”); СписокОшибокЁкселя.ДобавитьЗначение(”#REF!”); СписокОшибокЁкселя.ДобавитьЗначение(”#NAME?”); СписокОшибокЁкселя.ДобавитьЗначение(”#NUM!”); СписокОшибокЁкселя.ДобавитьЗначение(”#N/A”); //... ТекстЯчейки=Ячейка.Text; Если СписокОшибокЁкселя.НайтиЗначение(ТекстЯчейки)=0 Тогда Сообщить(Ячейка.Value); Иначе Сообщить(ТекстЯчейки); КонецЕсли;
|