PORTA.ru - on-line магазин ПОРТАтивной техники.PORTA.ru - on-line магазин ПОРТАтивной техники.

Новости
Мои разработки
FAQ
Ссылки
Форум

Маленькие хитрости при работе с Excel

Как при работе с 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 и отправить его по эл.почте


- Наверх -

В качестве благодарности за решение проблемы, щелкните здесь.
Поддержите развитие сайта.
Спасибо!
Автор и разработчик: Кайгородов Андрей aka mszsuz. mszsuz@online.sinor.ru ICQ#33993114. Дата последнего обновления страницы: Tuesday 18.05.2004 11:49
1C:TOP-100 Рейтинг ресурсов 1С
Hosted by uCoz