線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4038
推到 Plurk!
推到 Facebook!

將一個Excel的某個Range copy-->Paste至另一個Excel file中

答題得分者是:老大仔
mnsf
初階會員


發表:104
回覆:90
積分:48
註冊:2003-11-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-01-18 13:26:25 IP:61.30.xxx.xxx 訂閱
如果將某個Excel file中的sheet1的Range[A1:A7] copy -->
paste 至同一個Excel file的sheet2的Range[A1:A7]
語法如下:
var FMsExcel,WorkSheet,WorkSheet1,WorkSheet2:variant ;
begin
FMsExcel := CreateOleObject('Excel.Application');
FmsExcel.Application.workbooks.open('c:\1.xls');
WorkSheet1:= FMSExcel.WorkSheets[1];
WorkSheet2:= FMSExcel.WorkSheets[2];

WorkSheet1.range['A1','A7'].select;
FMsExcel.selection.copy;

WorkSheet2.select;
WorkSheet2.range['A1'].select;
FMsExcel.Selection.PasteSpecial(xlPasteValues,xlNone,False,False );

FMSExcel.Application.visible := True ;
end;

但如果是將某個Excel file中的sheet1的Range[A1:A7] copy -->
paste 至另一個Excel file的sheet2的Range[A1:A7]
那要怎麼寫呢?


老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-01-18 15:50:07 IP:59.120.xxx.xxx 未訂閱
既然都知道怎麼在Excel複製、貼上了
那麼將資料貼到另一個Excel怎麼不會呢?
只要再宣告個第二組變數(Ex: FMsExcel_2....)
然後再開啟另一個Excel檔
然後就依樣畫葫蘆的貼上不就得了 :p

===================引 用 mnsf 文 章===================
如果將某個Excel file中的sheet1的Range[A1:A7] copy -->
paste 至同一個Excel file的sheet2的Range[A1:A7]
語法如下:
var FMsExcel,WorkSheet,WorkSheet1,WorkSheet2:variant ;
begin
FMsExcel := CreateOleObject('Excel.Application');
FmsExcel.Application.workbooks.open('c:\1.xls');
WorkSheet1:= FMSExcel.WorkSheets[1];
WorkSheet2:= FMSExcel.WorkSheets[2];

WorkSheet1.range['A1','A7'].select;
FMsExcel.selection.copy;

WorkSheet2.select;
WorkSheet2.range['A1'].select;
FMsExcel.Selection.PasteSpecial(xlPasteValues,xlNone,False,False );

FMSExcel.Application.visible := True ;
end;

但如果是將某個Excel file中的sheet1的Range[A1:A7] copy -->
paste 至另一個Excel file的sheet2的Range[A1:A7]
那要怎麼寫呢?


mnsf
初階會員


發表:104
回覆:90
積分:48
註冊:2003-11-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2012-01-18 16:18:21 IP:61.30.xxx.xxx 訂閱
Hi 大大,感謝你的回覆,

我在發文前,就有做過你所謂的"依樣畫葫蘆"的動作,
但就是因為試不出來,所以才發文的。

程式碼如下,但執行時,會出現"Class Range 的 PasteSpecial方法失敗"的錯誤訊息。
var FMsExcel,WorkSheet,WorkSheet1,WorkSheet2:variant ;
FMsExcel2:variant;
begin
FMsExcel := CreateOleObject('Excel.Application'); //開啟Excel Application
FmsExcel.Application.workbooks.open('c:\1.xls'); //開啟已存在Excel File
WorkSheet1:= FMSExcel.WorkSheets[1];//COA

FMsExcel2 := CreateOleObject('Excel.Application'); //開啟Excel Application
FmsExcel2.Application.workbooks.open('c:\2.xls'); //開啟已存在Excel File
WorkSheet2:= FMSExcel2.WorkSheets[1];//COA

WorkSheet1.range['A1','A7'].select;
FMsExcel.selection.copy;

WorkSheet2.select;
WorkSheet2.range['B1'].select;
FMsExcel2.Selection.PasteSpecial(xlPasteValues,xlNone,False,False );

FMSExcel.quit;
FMSExcel2.Application.visible := True ;
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2012-01-18 16:23:38 IP:59.120.xxx.xxx 未訂閱
改成以下試試:
PasteSpecial(xlPasteValues,xlNone,False,False );

FMSExcel.quit;
FMSExcel2.Application.visible := True ;
系統時間:2024-04-26 16:24:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!