Конференция "Corba" » Excel из Delhpi
 
  • Егоров А.Н. (02.05.07 16:28) [0]
    Как можно вставить N строк на листе Excel перед какой-то строкой (например 26) из Delhpi.
    Пробовал:
    W_Schet.Range['A26','L'+IntToStr(26+N)].Insert;
    где W_Schet: ExcelWorksheet

    на F9 выдает ошибку после Insert; Not enough actual parametrs,
    а какие нужно написать параметры в Insert(_,_) нигде не нашел.

    Помогите, кто знает.
  • Neket (02.05.07 17:21) [1]
    А уточни.. Каких именно строк?
  • Егоров А.Н. (02.05.07 17:53) [2]
    Можно вставить пустые строки, а можно вставить пустые ячейки A26:L(26+N)
  • YurikGL © (02.05.07 20:20) [3]
    По аналогии с
    http://pda.delphimaster.net/?n=18&id=1178012859
    Пишем макрос, смотрим как он выглядит и приводим к нужному синтаксису.
    У меня получилось так:
    try
    app:=GetActiveOleObject('Excel.Application') as ExcelApplication;
    App.Visible := True;
    App.Rows.item[5].Select;
    App.Selection.Insert(xlDown);
    finally
     App:=Unassigned;
    end;

  • Neket (03.05.07 08:40) [4]
    Или так можеш попробовать:
    http://pda.delphimaster.net/?id=1177487406&n=18
  • Егоров А.Н. (03.05.07 11:10) [5]
    Нет не срабатывает Insert(xlDown)

    var
    XL: TExcelApplication;
    WB: ExcelWorkbook;
    WS_SFACT,WS_NAKL,WS_SCHET: ExcelWorksheet;
    Range: ExcelRange;

    // Открываем EXCEL
    XL := TExcelApplication.Create(Self);
    XL.ConnectKind := ckNewInstance;
    XL.Connect;

    // Открываем существующую книгу EXCEL [fTemp]
    WB := XL.Workbooks.Open(fTemp, 3, False,
     EmptyParam, EmptyParam, EmptyParam, true, EmptyParam, EmptyParam,
     EmptyParam, EmptyParam, EmptyParam, true, EmptyParam, EmptyParam, 0);

    // Открываем лист ['СЧЕТ_ФАКТУРА']
    WS_SFACT := WB.Sheets['СЧЕТ_ФАКТУРА'] as ExcelWorksheet;

    // Вставляем пустые ячейки [A26:L26] со сдвигом нижележащих ячеек
    // существующей таблицы товаров вниз
    WS_SFACT.Range['A26','L26'].Insert(xlDown);

    Здесь пишет ошибку [Not enough actual parametrs].
    У Insert должно быть два параметра (Shift: OleVariant,CopyOrigin: OleVariant),
    а у меня только один Insert(xlDown).
  • umbra © (03.05.07 12:02) [6]
    2 Егоров А.Н.   (03.05.07 11:10) [5]


    > Здесь пишет ошибку [Not enough actual parametrs].

    тка дайте ему два параметра. Если один из параметров Вам не важен, пишите вместо него
    EmptyParam

  • Егоров А.Н. (03.05.07 12:04) [7]
    Справился с Insert(xlDown).
    Надо было написать:

    WS_SFACT.Range['A26','A26'].EntireRow.Insert(xlDown,EmptyParam);

    вместо
    WS_SFACT.Range['A26','L26'].Insert(xlDown);
  • YurikGL © (03.05.07 21:16) [8]

    > Справился с Insert(xlDown).
    > Надо было написать:
    >

    Зависит от того что прописано в uses. У меня Word2000. У тебя, скорее всего WordXP
  • Егоров А.Н. (04.05.07 08:08) [9]
    Да OfficeXP.
  • имя (23.06.07 01:55) [10]
    Удалено модератором
  • имя (25.07.07 23:38) [11]
    Удалено модератором
Есть новые Нет новых   [134431   +9][b:0.001][p:0.001]