|
18.08.2007, 12:40 | #1 |
Участник
|
В Excel формирую сложную форму с оборотами по дебиторам, кредиторам и резервам по месяцам.
Отчет формируется очень долго. Но проблема не в этом. Если задаю 1-2 месяца отчет хоть и долго, но получается. Но когда задаю более длительный период, то получаю ошибку: "Не удалось вызвать функцию Cells. Компонент OLE или сервер Automation вернул неизвестный код ошибки." Я использую конструкцию: xlRange := xlSheet.Cells().Item(m_row,m_col); а далее, или в условии, например, IF FORMAT(xlRange.Value) = <что-нибудь> then .... или в операторе присваивания: xlRange.Value := <что-нибудь>; Причем, иногда вместо Cells в сообщении об ошибке фигурирует Item: "Не удалось вызвать функцию Item." С чем это может быть связано? Может вместо указанной конструкции лучше использовать что-либо другое? Спасибо. |
|
20.08.2007, 04:35 | #2 |
Участник
|
Возможно, слишком большие либо номер столбца (макс = 256), либо номер строки (макс = 65536) в Excel.
|
|
20.08.2007, 08:03 | #3 |
Участник
|
Превышение максимального числа строк или столбцов исключено.
|
|
20.08.2007, 10:02 | #4 |
Участник
|
Когда чегонибудь присваиваете или сравниваете со значениями ячеек используйте везде FORMAT. Ошибка не регулярная и очень странная. В моем случае вызывал функцию вывода данных с адресом ячейки. Постоянно выпадало на разных значениях. С толку сбивало то что парметром адреса ячейки была текстовая переменная и вроде бы её форматировать не надо. Потом попробовал адрес ячейки включить в FORMAT и о чудо... вылетать перестало.
__________________
Want to believe... |
|
20.08.2007, 12:04 | #5 |
Участник
|
Не сочтите за труд. Если можно уточните, как в моем случае
xlRange := xlSheet.Cells().Item(m_row,m_col); использовать FORMAT. Спасибо. |
|
20.08.2007, 12:06 | #6 |
Участник
|
Может Excel начинает автоматически сохраняться? Попробуйте в параметрах отключить автосохранение.
|
|
20.08.2007, 17:18 | #7 |
Участник
|
Отключил. Не помогло.
|
|
23.08.2007, 05:46 | #8 |
Участник
|
Говорите в сообщении об ошибке Cells и Item светятся? Чесно говоря не знаю в чем ошибка, но может попробовать без них обойтись? Как нить к примеру xlSheet.Range('A1').Value := <значение>...
|
|