range.Formula бросает COMException с чрезвычайно длинной формулой - PullRequest
0 голосов
/ 02 декабря 2011

Итак, вот как вы можете воспроизвести эту проблему:

1) Откройте две рабочие книги (назовите их wb1 и wb2)

2) Создайте формулу в wb1, которая ссылается на ячейки в другой, и убедитесь, что втиснули столько ссылок на ячейки, сколько вы можете, прежде чем достигнете максимального количества символов (т.е. вы можете просто сделать "= sum ([wb2 .xlsx] Лист1! A1, ..., ..., [wb2.xlsx] Лист1! A1) "

3) Закройте wb2, и теперь его путь добавляется к формуле wb1. Однако, так как мы уже были на пределе, это поднимает формулу.

Теперь, если я пытаюсь получить доступ к свойству формулы ячейки, я получаю исключение COMException. Есть ли обходной путь для этого?

1 Ответ

0 голосов
/ 02 декабря 2011

Когда вы закрываете wb2, Excel, вероятно, меняет путь на полный путь Windows книги (т.е. C:/Documents and settings...). Я бы сказал, что вам нужно изменить формулу, чтобы она не достигла предела количества символов.

Обходной путь должен иметь промежуточные формулы , что-то довольно грязное (но работает) - это иметь лист в wb1, который относится к wb2 (что-то такое же простое, как [wb2.xlsx]Sheet1!A1), и затем обращаться к этим ячейкам (они будут в той же книге) в вашей формуле.

Это довольно грязно, но может работать. Надеюсь, я достаточно ясно дал понять.

...