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

D5 ADO Excel copy issue 請教

尚未結案
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-18 21:40:34 IP:61.235.xxx.xxx 未訂閱
程式碼:
  Ms_ExcelR2 :=Ms_Dir + '\'+M_BB_File;  // 基本格式檔 唯讀 bb.xls
  Ms_ExcelAP2 := CreateOleObject('Excel.Application');
  Ms_ExcelWB2 := Ms_ExcelAP2.WorkBooks.OPEN(Ms_ExcelR2,ReadOnly := True);
  Ms_ExcelAP2.Worksheets[1].select;      Ms_ExcelW3 :=Ms_Dir + '\'+M_CC_File;  // 轉出資料檔 讀寫 cc.xls
  Ms_ExcelAP3 := CreateOleObject('Excel.Application');
  Ms_ExcelWB3 := Ms_ExcelAP3.WorkBooks.OPEN(Ms_ExcelW3);
  Ms_ExcelAP3.Worksheets[1].select;      ..
  ..      Ms_ExcelAP2.ActiveSheet.Rows['1:35'].Select;  // 選取 1-35 
  Ms_ExcelAP2.Selection.Copy;
  Ms_ExcelAP3.ActiveSheet.Rows['1:35'].Select;  // 貼上 
  Ms_ExcelAP3.ActiveSheet.Paste;
  ..
  ..
結果: 問題1:請教如何copy時,如何格式相同??(欄寬一樣) 程式ˊ執行時,會出現如圖畫面: 問題2:請教如何 autorun ?? 程式轉換時,300筆資料要按300次, 受不了. 一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-18 22:04:25 IP:220.132.xxx.xxx 未訂閱
1. 若要欄寬一樣, 則不能用 copy 達成, 得用設定欄寬的方式達成
  Ms_ExcelAP3.ActiveSheet.Columns[1].ColumnWidth :=   Ms_ExcelAP2.ActiveSheet.Columns[1].ColumnWidth;
  Ms_ExcelAP3.ActiveSheet.Columns[2].ColumnWidth :=   Ms_ExcelAP2.ActiveSheet.Columns[2].ColumnWidth;
2. 請參考 http://delphi.ktop.com.tw/topic.php?topic_id=51149
    // press enter
    keybd_event(VK_RETURN, 0, 0, 0);
    keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-18 23:28:27 IP:218.18.xxx.xxx 未訂閱
請教:
問題1:你的意思是指先設定欄寬,再copy ??
      如果是得話,我可以設loop處理.
問題2:
  A.如何知道有視窗跑出來??
    我想寫成:(怕會影響後面程式)
    if(有視窗跑出來) then
    begin
      keybd_event(VK_RETURN, 0, 0, 0);
      keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
    end;      B.keybd_event(a,b,c,d)中:
    a= Key 值
    b,c,d=?    不好意思.我是 Delphi 菜鳥. 
一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-19 21:37:49 IP:61.235.xxx.xxx 未訂閱
請教 keybd_event() 使用錯在哪??     一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-19 22:55:02 IP:220.132.xxx.xxx 未訂閱
你要寫在 paste 之後, 因為 keybd_event 那段程式是模擬按下 enter!!
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-20 20:52:15 IP:219.133.xxx.xxx 未訂閱
昨天試過一樣也不行    昨天我原本也是程式碼放在後面 過不去,才改在前面,想先存在KB buffer,還是不行    我想是視窗'focuse'改變的問題. 不知道此問題可否由 event/metion 來處理??     一切無為法.如虛亦如空.如如心不動.萬法在其中 發表人 - water 於 2004/10/20 21:09:54
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-20 21:23:28 IP:61.31.xxx.xxx 未訂閱
很簡單啊! 關閉提示訊息 Ms_ExcelAP3.DisplayAlerts :=false; 這樣就可以了! 不要顯示出來 可以Ms_ExcelAP3.Visible:=false; 發表人 - wameng 於 2004/10/20 21:32:30
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-10-25 22:30:51 IP:61.145.xxx.xxx 未訂閱
sorry,these day so busy in working, later i will try this issue . thk sir help me .    一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
系統時間:2024-06-29 5:50:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!