2015-05-04 4 views
0

В листе есть:Копирование ячейки с форматом из листа первенствовать на другой рабочую книгу лист в Delphi

This is a header

Я хочу, чтобы разъединить на B2: C2 ячейку и скопировать с его форматом другой лист (в другой книге) в A1, затем значение (в C3) в ячейку B1 другого листа, от D2 до A2, от E2 до B2 и так далее ... Как я могу это сделать?

This is a detail

procedure Something; 
const root = 'C:\vial\$$652791.xls'; 
    filename = 'C:\vial\abarajame.xls'; 
var xlsH, xlsD: TExcelApplication; 
    sheetH,sheetD: _Worksheet; 
    DestRange: OleVariant; 
    format: string; 
begin 
    xlsH := TExcelApplication.Create(Self); 
    xlsD := TExcelApplication.Create(Self); 
    xlsH.Workbooks.Open(root, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0); 
    xlsD.Workbooks.Open(filename, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, 0); 
    sheetH := xlsH.Worksheets[1] as _Worksheet; 
    sheetD := xlsD.Worksheets[1] as _Worksheet; 
    //Insert 5 empty rows 
    sheetD.Rows.Range['A1','A5'].EntireRow.Insert(xlShiftDown, Null); 
    //1st. col. 
    sheetH.Cells.Range['B2','I2'].MergeCells := False; 
    DestRange := sheetH.Cells.Range['B2','I2']; 
    format := sheetH.Cells.Range['B2','I2'].NumberFormat; 
    sheetD.Cells.Range['A1','A1'].Copy(DestRange); 
    sheetD.Cells.Range['A1','A1'].NumberFormat := format; 
    DestRange := sheetH.Range['C3','C3']; 
    format := sheetH.Range['C3','C3'].NumberFormat; 
    sheetD.Range['A2','A2'].Copy(DestRange); 
    sheetD.Range['A2','A2'].NumberFormat := format; 
    //2nd. col. 
    DestRange := xlsH.Range['D2','D2']; 
    xlsD.Range['B1','B1'].Copy(DestRange); 
    DestRange := xlsH.Range['C4','C4']; 
    hojaD.Range['B2','B2'].Copy(DestRange); 
    xlsd.SaveWorkspace; 
    xlsH.Workbooks.Close(0); 
    xlsD.Workbooks.Close(0); 
    FreeAndNil(xlsH); 
    FreeAndNil(xlsD); 
end; 

Я проверил с Дифференц способами, Cells.Range, диапазон от листа, из клеток с ExcelApplication, но ничего не делает !!

Результат должен быть:

That I want to do

+0

решаемая. Мне не нужно создавать 2 TExcelApplication instancies. Только открывать каждую книгу и копировать из диапазона источников в диапазон назначения – NizamUlMulk

ответ

0

это режим:

sheetD.Rows.Range['A1','A5'].EntireRow.Insert(xlShiftDown, Null); 
    //1st. col. 
    sheetH.Range['B2','B2'].Copy(sheetD.Range['A1','A1']); 
    sheetH.Range['C3','C3'].Copy(sheetD.Range['B1','B1']); 
    //2nd. col. 
    sheetH.Range['D2','D2'].Copy(sheetD.Range['A2','A2']); 
    sheetH.Range['D3','D3'].Copy(sheetD.Range['B2','B2']); 
    //3rd. col. 
    sheetH.Range['E2','E2'].Copy(sheetD.Range['A3','A3']); 
    sheetH.Range['E3','E3'].Copy(sheetD.Range['B3','B3']); 
    //4th.col 
    sheetH.Range['F2','F2'].Copy(sheetD.Range['A4','A4']); 
    sheetH.Range['F3','F3'].Copy(sheetD.Range['B4','B4']); 
    // col.1 
    sheetH.Range['G2','G2'].Copy(sheetD.Range['C1','C1']); 
    sheetH.Range['G3','G3'].Copy(sheetD.Range['D1','D1']); 
    // col.2 
    sheetH.Range['H2','H2'].Copy(sheetD.Range['C2','C2']); 
    sheetH.Range['H3','H3'].Copy(sheetD.Range['D2','D2']); 
    // col.3 
    sheetH.Range['I2','I2'].Copy(sheetD.Range['C3','C3']); 
    sheetH.Range['I3','I3'].Copy(sheetD.Range['D3','D3']); 
Смежные вопросы