|
|
|
Junior Member
      
участник
Last Login: 18.07.2007 11:10
Сообщ.: 14,
Visits: 139
|
|
| Мучую эту ошибку уже долго, решила спросить. Есть шаблон .xlt, у него есть макрос. Еще есть написанный сервис, который запускает эксель, открывает workbook по данному шаблону и запускает макрос. В макросе пользуется в нескольких местах код, подобный этому: Dim sheet As Worksheet Set sheet = Worksheets(2) sheet.Select cnt_breaks = sheet.HPageBreaks.Count Дак вот, когда выполняю этот код вручную (без всякиз запусков из сервиса), то проходит всегда все идеально. Когда выполняется из сервиса он выполняется через раз, то все отлично проходит, то выдает такую ошибку: Number: -2147417848 Method 'Count' of object 'HPageBreaks' failed А иногда такую Number: -2147417848 Method '_Default' of object 'HPageBreaks' failed причем в различных местах кода, но всегда там где есть HPageBreaks. Убиваю эксель, запускается заново из сервиса с теми же параметрами входящими - и все ок. Оч похоже на то, что снесло крышу гдет, так как ранее такой траблы не было. Но установка офиса 2003 вместо XP и установка сервис пака для офиса не помогла. Куда копать? Переставлять винду очень не хочется.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 23.06.2008 8:38
Сообщ.: 91,
Visits: 451
|
|
| HPageBreaks является коллекцией, поэтому перед тем как обращаться к свойству Count, проверьте её на Nothing. if not (sheet.HPageBreaks is Nothing) then cnt_breaks = sheet.HPageBreaks.Count end if
|
|
|
|
|
Junior Member
      
участник
Last Login: 18.07.2007 11:10
Сообщ.: 14,
Visits: 139
|
|
| Можно проверять, но на листе, как минимум один HPagaBreaks есть изначально - поставленный вручную. А вот сколько разделителей получилось в результате добавления rows, это и надо выяснить. В итоге получится, если HPagaBreaks is Nothing, то и смысл последующих действий теряется. Как сделать, чтобы HPagaBreaks не был Nothing, если разделители страниц имеются?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 16.04.2008 11:44
Сообщ.: 366,
Visits: 2 473
|
|
Уже сталкивался с подобной проблемой:
http://relib.com/forums/Topic909706-11-1.aspx?Highlight=HPageBreaks
Прежде чем прочитать количество разделителей попробуйте :
ActiveCell.SpecialCells(xlLastCell).Select
Range("A1").Select
С уважением,
|
|
|
|