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

如何於DELPHI 5中將OLE下傳的EXCEL 欄或列設定保護

尚未結案
ROCKY
一般會員


發表:1
回覆:2
積分:0
註冊:2003-05-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-31 12:19:12 IP:210.208.xxx.xxx 未訂閱
我於DELPHI中將DATABASE資料透過 OLE 下載為 EXCEL檔 但如何將SHEET1某行或列設定為保護及設定密碼, 目前我只會整張工作表 OleExcelWorkSheet.Protect('ROCKY','FALSE','TRUE','FALSE');
timhuang
尊榮會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-31 14:30:57 IP:61.221.xxx.xxx 未訂閱
Hi, 在 excel 中是沒有直接設定保護某些欄, 列或儲存格的方法, 但是有一個變通的作法, 就是利用 [允許使用者編輯範圍] 來進行反向的操作, 我們可以先設定使用者可以編輯的範圍後(不要設定密碼, 讓一般使用者都可以對這些範圍進行編輯), 然後將工作表保護起來(可設密碼也可以不設密碼, 純保護), 如此一來就可以做到類似保護部分的欄, 列或儲存格的功能了. 以下的程式碼表示僅有'A2:E11'這個範圍使用者可以編輯, 其餘不可, 如下:
procedure TForm1.Button1Click(Sender: TObject);
var
  excel: Variant;
begin
  excel := CreateOleObject('Excel.Application');
  excel.WorkBooks.Add;
  excel.Visible := true;      //..... 加入可以讓使用者編輯的範圍 ..... 其中 Range 就是範圍的設定, Title 則是取一個名稱即可, 各範圍不要重複即可
  excel.WorkBooks[1].WorkSheets[1].Protection.AllowEditRanges.Add(Title:='Range1', Range:=excel.WorkBooks[1].WorkSheets[1].Range['A2:E11']);
  ....繼續加入可編輯的範圍...
  .........      //.....將此工作表保護起來.....
  excel.WorkBooks[1].WorkSheets[1].Protect(DrawingObjects:=True, Contents:=True, Scenarios:=True);      //excel.WorkBooks[1].SaveAs('c:\a.xls');
  //excel.Quit;
  excel := Unassigned;
{
    excel 的巨集錄製部分
    ActiveSheet.Protection.AllowEditRanges.Add Title:="範圍1", Range:=Range("A2:E11")
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
}
end;
ROCKY
一般會員


發表:1
回覆:2
積分:0
註冊:2003-05-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-31 15:26:49 IP:210.208.xxx.xxx 未訂閱
[HI: 我試了但是出現Method Protection Not supported; with qyData do begin for J := 0 to FieldCount - 1 do OleExcelWorkSheet.Cells[1, J 1].Value := Fields[J].FieldName; First; I := 2; OleExcelWorkSheet.Cells[2, 1].Value := Fields[1].AsString; end; OleExcelWorkSheet.Protection.AllowEditRanges.Add(TITLE:=RANGE1,Range:=OleExcelWorkSheet.Range[G1:G2]); OleExcelWorkSheet.Protect(DrawingObjects:=True, Contents:=True, Scenarios:=True);
timhuang
尊榮會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-31 22:34:13 IP:61.221.xxx.xxx 未訂閱
請問你使用的 excel 的版本為何? 這裡試過 excel xp 是 ok 的. 另外請確認一下下面紅色的部分.. 是否有加了單引號.    
OleExcelWorkSheet.Protection.AllowEditRanges.Add(TITLE:='RANGE1',Range:=OleExcelWorkSheet.Range['G1:G2']);
ROCKY
一般會員


發表:1
回覆:2
積分:0
註冊:2003-05-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-02 07:55:21 IP:210.208.xxx.xxx 未訂閱
HI: 我所用的 excel版本為 excel2000 我試了但是仍出現Method Protection Not supported;
系統時間:2024-04-27 12:12:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!