一个excel 文档不让改动

解决方案 »

  1.   

    是要用程序写还是手工设置,
    如果是用手工设置的话,只要使用“工具”->“保护”->“保护工作薄”就行了如果要用程序写的话?你录制一个宏不就知道了?ActiveWorkbook.Protect Structure:=True, Windows:=False
    这是宏,用DELPHI写:
    uses comobj;
    var
        ExcelApp,MyWorkBook: OLEVariant;
    begin
      num:=0;
      if opendialog1.Execute then
      begin
        try
          ExcelApp:=CreateOleObject('Excel.Application');
          MyWorkBook:=CreateOleobject('Excel.Sheet');
        except
          application.Messagebox('无法打开Xls文件,请确认已经安装EXCEL.','',
               mb_OK+mb_IconStop);
          Exit;
        end;
        MyworkBook:= ExcelApp.workBooks.Open(opendialog1.FileName);
        MyworkBook.Protect('',true,true,true,true,true,true);
    ...
    VBA中关于protect的说明:
    Protect 方法
                    保护图表或工作表(语法 1)或工作簿(语法 2),使之不能被修改。语法 1expression.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly)语法 2expression.Protect(Password, Structure, Windows)expression  必选。返回 Chart 或 Worksheet 对象(语法 1)或 Workbook 对象(语法 2)的表达式。Password  Variant 类型,可选。加在工作表或工作簿上区分大小写的密码字符串。如果省略本参数,不用密码就可以取消对该工作表或工作簿的保护。否则,取消对该工作表或工作簿的保护时必须提供该密码。如果忘记了密码,就无法取消对该工作表或工作簿的保护。最好在安全的地方保存一份密码及其对应文档名的列表。DrawingObjects  Variant 类型,可选。若为 True 则保护形状。默认值为 False。Contents  Variant 类型,可选。若为 True 则保护内容。对于图表工作表,这样将保护整个图表。对于工作表,这样将保护每个单元格。默认值为 True。Scenarios  Variant 类型,可选。若为 True 则保护方案。本参数仅对工作表有效。默认值为 True。Structure  Variant 类型,可选。若为 True 则保护工作簿结构(工作簿中工作表的相对位置)。默认值为 False。UserInterfaceOnly  Variant 类型,可选。若为 True 则保护用户界面,但不保护宏。如果省略本参数,则即保护宏也保护用户界面。Windows  Variant 类型,可选。若为 True 则保护工作簿窗口。如果省略本参数,则不保护该窗口。说明如果对工作表使用 Protect 方法时,将 UserInterfaceOnly 参数设置为 True ,然后又保存了工作簿,那么再次打开工作簿时,整个工作表将被完全保护,而非仅仅保护用户界面。若想在再次打开工作簿后仅保留该工作表的用户界面保护,必须再次将 UserInterfaceOnly 参数设置为 True 并应用 Protect 方法。