Как при работе
с Excel через OLE обойти предупреждения
Excel требует подтверждений пользователя, например, при удалении листа
из рабочей книги. При этом процесс обработки останавливается. Как сделать
чтобы он не задавал таких вопросов?
Эксель = СоздатьОбъект("Excel.Application");
.....
Эксель.DisplayAlerts = 0;
..... а здесь делаешь че-нить пакостное
Эксель.DisplayAlerts = 1;
<сообщил avb>
Формат числа при выгрузке в Excel
При выгрузке данных в Excel числа типа 9237642437 отображаются 9,23764Е+11.
Есть такая фича у Excel: если перед числом (или другим значением) поставить
апостроф ('), эксель это понимает как то, что ему подсовывают текст,
а апостроф отображаться не будет, т.е. напиши так: '9237642437
<сообщил avb>
Для того, чтобы открыть файл *.mxl в Excel
Необходимо внести в реестр следующую информацию:
REGEDIT4
[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
<сообщил Reder>
Как определить, когда закончились данные на листе при загрузке данных
из Excel
SpecialCells(11) - "последняя" ячейка
Например, если нужен номер строки последней ячейки, то LastRow=ExcelApp.Cells(1,1).SpecialCells(11).Row;
<сообщил AlexNik>
Обработка ошибочных значений
При обработке через OLE ячеек, содержащих ошибочные значения (#ДЕЛ/0!;#ЗНАЧ!;#ЧИСЛО! и т.п.) 1С зависает при обращении к
свойству Value - не помогает даже конструкция Попытка-Исключение.
Обойти эту неприятность можно очень просто - проверять перед обращением к Value свойство Text:
СписокОшибокЁкселя=СоздатьОбъект("СписокЗначений");
СписокОшибокЁкселя.ДобавитьЗначение("#ПУСТО!");
СписокОшибокЁкселя.ДобавитьЗначение("#ДЕЛ/0!");
СписокОшибокЁкселя.ДобавитьЗначение("#ЗНАЧ!");
СписокОшибокЁкселя.ДобавитьЗначение("#ССЫЛКА!");
СписокОшибокЁкселя.ДобавитьЗначение("#ИМЯ?");
СписокОшибокЁкселя.ДобавитьЗначение("#ЧИСЛО!");
СписокОшибокЁкселя.ДобавитьЗначение("#Н/Д");
//Для англ. версии
СписокОшибокЁкселя.ДобавитьЗначение("#NULL!");
СписокОшибокЁкселя.ДобавитьЗначение("#DIV/0!");
СписокОшибокЁкселя.ДобавитьЗначение("#VALUE!");
СписокОшибокЁкселя.ДобавитьЗначение("#REF!");
СписокОшибокЁкселя.ДобавитьЗначение("#NAME?");
СписокОшибокЁкселя.ДобавитьЗначение("#NUM!");
СписокОшибокЁкселя.ДобавитьЗначение("#N/A");
//...
ТекстЯчейки=Ячейка.Text;
Если СписокОшибокЁкселя.НайтиЗначение(ТекстЯчейки)=0 Тогда
Сообщить(Ячейка.Value);
Иначе
Сообщить(ТекстЯчейки);
КонецЕсли;
<сообщил
Подвинцев Алексей aka Gloom>
см. также:
Сформировать документ Excel
и отправить его по эл.почте