powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Excel.Range.Insert Метод Insert из класса Range завершен неверно
20 сообщений из 20, страница 1 из 1
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588057
Столкнулся с проблемой вставки группы ячеек со сдвигом.
Вставка строк и столбцов через Range.EntireColumn.Insert(xlShiftDown)/Range.EntireRow.Insert(xlShiftToRight) работает отлично.

Когда пытаюсь выполнить Range['A1:B1'].Insert(xlShiftDown) получаю исключение.
Метод Insert из класса Range завершен неверно

Код: pascal
1.
2.
3.
4.
5.
6.
var exc,wb,ws:Variant;
WB:=exc.WorkBooks.Item[1];
WS:=WB.Sheets.Item[1];
WS.Range['A1'].Value:='A1';
WS.Range['C1'].Value:='C1';
WS.Range['A1:B1'].Insert(xlShiftDown);//Метод Insert из класса Range завершен неверно




Кто знает как правильно вставить диапазон ячеек со сдвигом в Excel?
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588073
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил ЕвгеньевичКто знает как правильно вставить диапазон ячеек со сдвигом в Excel?
Включаешь запись макросов. Делаешь то, что нужно и переносишь код из макроса в делфи.
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588077
Макрос.
Код: vbnet
1.
2.
 Range("A2:H2").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove



И? Что я делаю не так?
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588085
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил ЕвгеньевичЧто я делаю не так?
Может второго аргумента не хватает?
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588097
При раннем связывании такая конструкция работала.

Код: pascal
1.
2.
3.
var WS:TExcelWorkSheet
...
WS.Range['A7:H7',EmptyParam].Insert(xlShiftDown,EmptyParam);



Сейчас переделал на позднее связывание и всё... не могу понять, что я делаю не так.
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588098
wadman,
Добавлял. Не помогает.
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588109
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил Евгеньевич,
Ошибки как таковой не видно. Вполне возможно, что индусы это место криво перевели.
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588165
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?
Код: pascal
1.
WS.Range['A1:B1'].Insert(Shift := xlShiftDown);
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588205
_Vasilisk_,

Неа. Разные вариации пробовал. И второй параметр так определить и EmptyParam, всё без толку.
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588214
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, у меня все корректно работает (Office XP)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
uses ComObj, ExcelXP;

procedure TestShift;
var XL, Sh: OleVariant;
begin
  XL:=CreateOleObject('Excel.Application');
  try
    SH:= XL.WorkBooks.Add.Sheets[1];

    Sh.Cells[1,1]:='AAA';
    Sh.Cells[1,2]:='BBB';


    Sh.Range['A1:B1'].Insert(Shift :=xlShiftDown);
    XL.Visible:=true;
  except
    XL.quit;
    raise;
  end;
end;
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588250
Office 2010. Не работает.
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588306
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил Евгеньевич,
Ну ясно, индусы намутили.
Проверь update-ы, есть небольшой шанс, что уже профиксили. Если нет - можно из программы макрос запустить, который это выполнит.
И вообще, это правильный подход: прога только выгружает данные, а все форматирование делается средствами Excel-я (шаблоны+макросы).
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588329
Соколинский Борис,

Мне не нужно форматирование как таковое. Я обрабатываю файлы с данными за определённые даты. И вставляю в Excel в соответствии с Датой получения данных. Пользователь может загрузить данные сначала за 22.01.2018, а потом за 20.01.2018, а потом за 21.01.2018. А потом за 17 год. Вот я и ищу куда засунуть данные за эту дату и вставляю в нужную позицию, чтоб графики рисовались и вообще :)

Проверил дома на Office2007, тоже нот ворк. :(
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588334
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил Евгеньевич,
А сортировку в Экселе использовать никак?
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588344
Соколинский Борис,

Хз, я не умею в Excel. Там можно отсортировать Диапазон по части столбца? Т.е. сортировка по дате с A7 по A10 диапазона A7:H10 например.
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588355
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил Евгеньевич,
а сам-то как думаешь?
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588361
Михаил Евгеньевич,
Похоже на то.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var
XLApp,Sheet:OLEVariant;
begin
XLApp:= CreateOleObject('Excel.Application'); //инициализация экселя
XLApp.Workbooks.Add;//создаем новую книгу или открываем
XLApp.Visible:=true; //делаем эксель видимым
XLApp.Workbooks[1].WorkSheets[1].Name:='Имя'; //присваеваем листу книги имя
Sheet:=XLApp.Workbooks[1].WorkSheets['Имя']; //для удобства работы с листом чтоб каждый раз не печатать XLApp.Workbooks[1].WorkSheets['Имя'].  ...
//Ну и сама сортировка (большая часть данных берется из маркроса самого экселя)
// sheet.Range[Sheet.Cells[1,1],Sheet.Cells[10,10]] - задает диапазон который будем сортировать
//Key1:=sheet.Range[Sheet.Cells[3,3],Sheet.Cells[10,3]] - задает столбец по которому идет сортировка
//с остальными параметрами поэксперементируй либо просто возьми из маркроса экселя
sheet.Range[Sheet.Cells[1,1],Sheet.Cells[10,10]].Sort
(Key1:=sheet.Range[Sheet.Cells[3,3],Sheet.Cells[10,3]], Order1:=1, Header:=0, OrderCustom:=1, MatchCase:=False, Orientation:=1, DataOption1:=0);
end;
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588363
Соколинский Борис,

Интересно, а поиск лучше тоже Excel'евский использовать? А то я в Массив запихиваю и ищу.
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588401
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Михаил Евгеньевич,
тебе сегодня везет с догадками.
...
Рейтинг: 0 / 0
Excel.Range.Insert Метод Insert из класса Range завершен неверно
    #39588415
Соколинский Борис,

Спасибо за наводку.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Excel.Range.Insert Метод Insert из класса Range завершен неверно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]