delphi control Excel 搜尋( ctrl + f ) . 如何找下一筆 ?? |
尚未結案
|
water
初階會員 ![]() ![]() 發表:90 回覆:89 積分:35 註冊:2003-07-07 發送簡訊給我 |
不知以下程式碼要如何修正 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 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |