Может кто подскажет, как посредством Delphi скопировать данные из одной книги (Excel) и вставить их в другую(Excel).
Использую такой код, но программа аварийно завершается.
....
var
XL_1: Variant;
XL_2: Variant;
....
XL_2.Range['c6','c12'].Copy(EmptyParam);
XL_1.Range['d9','d15'].PasteSpecial(,,False,False);
....
выводит ошибку: "Метод PasteSpecial из класса Range завершен неверно"
Есть предположение, что необходимо активировать первую книгу для того, чтобы вставить данные из буфера обмена, но не получается (делал через XL_1.WorkBooks[1].Activate;).
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
17-05-2012 06:16
Задача: скопировать из Word'a текст и таблицу через буфер в Excel. Как известно, Excel меняет формат данных при ставки, например, двадцатизначный счёт 40702810000400002588 преобразует в 4,07028E+19.
Решение: в Word выделяем текст и копируем его в буфер. С этим проблем нет, стандартный vba справляется.
в Excel вставляем следующим кодом:
...
var Excel, WorkBook, Sheet:Variant;
myRange: OleVariant;
begin
Excel := CreateOleObject('Excel.Application');
WorkBook:=Excel.WorkBooks.add;
Sheet := Workbook.Sheets.Item[1];
Excel.Application.Cells.Select;
Excel.Application.Selection.NumberFormat:='@';
Excel.Application.Selection.Range['A1',EmptyParam].PasteSpecial(xlPasteValues,,,);
Excel.visible:=true;
... //Дальше сохраняем, преобразуем и т.д.
end;
Спасибо огромное kilobait80, Работает только так: PasteSpecial(xlPasteValues,,,);
25-03-2010 04:29 | Комментарий к предыдущим ответам
>>>PasteSpecial(,,False,False);
и это вы называете с параметрами по умолчанию? Параметры что идут впереди для позднего связывания пропускать нельзя! Для раннего связывания указание двух первых параметров обязательно:
24-03-2010 03:21 | Комментарий к предыдущим ответам
>>>XL_1: Variant;
Для лучшего понимания что вы пишите и что "оно" делает, рекомендую использовать раннее связывание вместо позднего. Хотя при раннем связывании придется больше поработать руками, за то не будете себя чувствовать слепым котенком при написании кода.
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.