Показать сообщение отдельно
Старый 25.05.2009, 13:03   #8  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,658 / 1162 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Gustav
Метод, соответственно, будет с двумя параметрами: static void копирование(COM исходныйДиапазон, COM диапазонВставки). Заметьте, что метод статический, а значит он может быть помещен в любой (!) подходящий класс, а не исключительно в ComExcelDocument_RU. Обратите также внимание (и это может вызвать смятение), что ему и Excel-то не нужен! Единственное, что этот метод не будет копировать диапазоны между разными сессиями Excel (разные объекты Excel.Application). Наверное... Хотя надо проверить!

Как вы поняли, предлагаемый метод с двумя параметрами будет содержать одну-единственную строку. Внимание - вопрос: нафига он тогда вообще нужен? Не проще ли, имея в распоряжении две COM-переменные диапазонов, написать эту строку кода прямо в caller-методе. Строка-то все равно одна. Зачем еще и лишний вызов?
Подобные рассуждения хороши "вообще". В отрыве от конкретной задачи.

Да, конечно, получив ссылку на COM-объект дальше можно работать вне контекста ComExcelDocument_RU, но, разве вы будете организовывать копирование через COM-объекты? Нет, конечно. Вы будете организовывать копирование через АДРЕСА. Задача формулируется примерно так:

Скопировать ячейку "A1" в ячейку "A2". Ну, или через имена. Не важно.

Т.е. сама постановка задачи предполагает, что ссылок на COM-объекты нет. Есть только их адреса. А ссылки надо еще сформировать по этим адресам. Поэтому создание статического метода становится бессмысленным. Нужен "контекст". Среда ComExcelDocument_RU.

Разумеется, возможна ситуация, когда Com-объект со ссылкой на копируемые ячейки был сформирован раньше, для решения каких-то других задач. Но ведь очевидно, что это частный случай, обсуловленный логикой этой самой задачи. В общем случае далеко не факт, что это произойдет.

Т.е. работа с Com-объектами напрямую - это возможный вариант. Но именно как частный случай.