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

delphi control Excel 搜尋( ctrl + f ) . 如何找下一筆 ??

尚未結案
water
初階會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-09 17:02:54 IP:61.222.xxx.xxx 未訂閱
不知以下程式碼要如何修正     procedure Chang_CC_Excel_Barcode(); VAR   M_Col,M_Row,M_DD_Row,M_DD_Col : integer ;      M_Sheet : integer ;   M_Cell_Str : string ;      FCell : variant ;   FindRow, FindColumn: integer ;         FWorkSheet : variant;    begin   Ms_dir :=GetCurrentDir();           // 取得目前程式位置   Ms_ExcelW3 := 'CC.xls' ;            // 轉出資料   Ms_ExcelW4 := 'DD.xls' ;            // 轉出資料   Ms_ExcelW3 := Ms_Dir + '\'+Ms_ExcelW3 ;   Ms_ExcelW4 := Ms_Dir + '\'+Ms_ExcelW4 ;       // test setup.xls 設定檔   Ms_ExcelAP3 := CreateOleObject('Excel.Application');   Ms_ExcelWB3 := Ms_ExcelAP3.WorkBooks.OPEN(Ms_ExcelW3); // 舊檔 開啟   Ms_ExcelAP3.Worksheets[1].activate;      try       Ms_ExcelAP4 := CreateOleObject('Excel.Application');       Ms_ExcelWB4 := Ms_ExcelAP4.WorkBooks.OPEN(Ms_ExcelW4);          Ms_ExcelAP4.Worksheets[3].select;          // 舊檔 clear sheet1       Ms_ExcelAP4.ActiveSheet.cells.clear;       Ms_ExcelAP4.Worksheets[2].select;       Ms_ExcelAP4.ActiveSheet.cells.clear;       Ms_ExcelAP4.Worksheets[1].select;       Ms_ExcelAP4.ActiveSheet.cells.clear;      except       Ms_ExcelWB4 := Ms_ExcelAP4.WorkBooks.add;   // 新檔 重建       Ms_ExcelWB4.SaveAS(Ms_ExcelW4);   end;      for M_Sheet:=1 to 3 do   begin     Ms_ExcelAP3.Worksheets[M_Sheet].Activate;          //指定工單欄     Ms_ExcelAP4.Worksheets[M_Sheet].Activate;          //指定工單欄        FWorkSheet:=Ms_ExcelAP3.WorkSheets[M_Sheet];        M_DD_Row:=1;     M_DD_Col:=1;      //  Ms_ExcelAP4.cells[1,M_DD_Row].value:=M_date;    // 存日期     M_DD_Row:=M_DD_Row+1;        FCell := Ms_ExcelAP3.cells.Find('BW');        if not VarIsEmpty(FCell) then     begin       FindRow := FCell.Row;       // save Frist_find_cell row       repeat         FOR M_Col:=1 TO 13 do         begin            if (M_Sheet=1) and ((M_Col=2) or (M_Col=3) or (M_Col=4) or (M_Col=5) or (M_Col=8)  or (M_Col=9) or (M_Col=10) or (M_Col=11) or (M_Col=13)) then                continue;               if (M_Sheet=2) and ((M_Col=2) or (M_Col=3) or (M_Col=5) or (M_Col=7) or (M_Col=8) or (M_Col=12)) then                continue;               if (M_Sheet=3) and ((M_Col=2) or (M_Col=3) or (M_Col=5) or (M_Col=7) or (M_Col=8) or (M_Col=12)) then                continue;               M_Cell_Str := Ms_ExcelAP3.cells[Fcell.Row,M_Col].value;   // Cell string            Ms_ExcelAP4.cells[M_DD_Row,M_DD_Col].value:=M_Cell_Str;               M_DD_Col:=M_DD_Col+1;         end;    //   FCell := Ms_ExcelAP3.WorkSheets[M_Sheet].cells.Findnext(FCell);  // ERROR         FCell:= FWorkSheet.cells.Findnext(FCell);  Error M_DD_Row:=M_DD_Row 1; until (FindRow = FCell.Row); end; // scan_back check end; Ms_ExcelAP3.ActiveWorkBook.Saved := True; // 不存檔 Ms_ExcelAP3.Application.Quit; // 離開 Ms_ExcelAP4.Worksheets[1].Activate; // 最適欄寬 Ms_ExcelAP4.Worksheets[1].Cells.Select; Ms_ExcelAP4.Selection.Columns.AutoFit; Ms_ExcelAP4.Worksheets[2].activate; // 最適欄寬 Ms_ExcelAP4.Worksheets[2].Cells.Select; Ms_ExcelAP4.Selection.Columns.AutoFit; Ms_ExcelAP4.Worksheets[3].activate; // 最適欄寬 Ms_ExcelAP4.Worksheets[3].Cells.Select; Ms_ExcelAP4.Selection.Columns.AutoFit; Ms_ExcelWB4.Save; Ms_ExcelAP4.Application.Quit; end; procedure TForm1.Button1Click(Sender: TObject); begin Chang_CC_Excel_Barcode(); end; end. 一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-09 20:22:44 IP:202.39.xxx.xxx 未訂閱
http://groups.google.com.tw/groups?hl=zh-TW&lr=&ie=UTF-8&inlang=zh-TW&th=efb903b380803692&rnum=1
var
  SearchRange, Found: Range;
  MatchCase: OleVariant;
begin
  MatchCase := True;
  SearchRange := WS.Range['A1', 'G12'];
  Found := SearchRange.Find('FindText', Excel.ActiveCell,
                            TOleEnum(xlValues), xlWhole, xlByRows,
                            xlNext, MatchCase, EmptyParam,
                            EmptyParam, EmptyParam, EmptyParam,
                            EmptyParam);
  if Found <> nil then
    Found.Interior.Color := clTeal;      Found := SearchRange.FindNext(Found);
  if Found <> nil then
    Found.Interior.Color := clFuchsia;
http://groups.google.com.tw/groups?hl=zh-TW&lr=&ie=UTF-8&inlang=zh-TW&th=c275fe453616443c&rnum=4
const
  xlValues = $FFFFEFBD;
  xlPart = $00000002;
var
  SheetNo: integer;
  Range, Found, Addr: OleVariant;
begin
  for SheetNo := 1 to WB.Worksheets.Count do
  begin
    Range := WB.Worksheets[SheetNo].UsedRange;
    Found := Range.Find('aaa', Lookin := xlValues, 
                        Lookat := xlPart);
    if not VarIsEmpty(Found) then
    begin
      Addr := Found.Address;
      repeat
        Found.AddComment('This cell says "aaa"');
        Found := Range.FindNext(Found);
      until VarIsEmpty(Found) or (Found.Address = Addr);
    end;
  end;
--- Everything I say is a lie.
water
初階會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-10 08:22:16 IP:61.222.xxx.xxx 未訂閱
請教使用 Range[Cell_1,Cell_2] : 要指定 Cell_1 , Cell_2  如果要指定 Range[Rol=3,Col=Max]  // scan 第三列_全部 要如何指定 ?    sorry . 第一次寫window程式.很多東西不懂    ---- water    一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
系統時間:2024-06-26 23:25:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!