以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  使用excel模板打印如何不让人修改内容  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87310)

--  作者:rjh4078
--  发布时间:2016/7/8 8:21:00
--  使用excel模板打印如何不让人修改内容

如题 

我试着转成pdf再预览  但是很多电脑太老 pdf转换要等N久 而且经常出现各种组件错误  但是使用excel直接预览时 操作员又能修改打印内容 之前红袍老是教过只读的方法也没成功

 


--  作者:大红袍
--  发布时间:2016/7/8 9:30:00
--  

 设置excel的权限就行

 

  • Protect

    保护工作表。
    Protect方法可以指定保护密码参数,该密码为一个区分大小写的字符串。如果省略本参数,不用密码就可以取消对该工作表的保护。如:

    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\\Report.xls")
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets("同期对比")
    Ws.Protect(Password:="hhh")  \'以密码保护
    Wb.Save
    App.Quit

    如果直接写为:Ws.Protect,则无需密码就能取消保护。

    除此以外,Protect中还可以使用以下参数:

    DrawingObjects:是否保护图表。如:Ws.Protect(DrawingObjects:=True)
    Contents:是否保护单元格内容。
    Scenarios:是否保护方案。
    UserInterfaceonly:是否保护用户界面,但不保护宏。如果省略本参数,则保护既应用于宏也应用于用户界面。
    AllowFormattingCells:是否允许用户为受保护的工作表上的任意单元格设置格式。
    AllowFormattingColumns:是否允许用户为受保护的工作表上的任意列设置格式。
    AllowFormattingRows:是否允许用户为受保护的工作表上的任意行设置格式。
    AllowInsertingColumns:是否允许用户在受保护的工作表上插入列。
    AllowInsertingRows:是否允许用户在受保护的工作表上插入行。
    AllowInsertingHyperlinks:是否允许用户在受保护的工作表中插入超链接。
    AllowDeletingColumns:是否允许用户在受保护的工作表上删除列,要删除的列中的每个单元格都是解除锁定的。
    AllowDeletingRows:是否允许用户在受保护的工作表上删除行,要删除的行中的每个单元格都是解除锁定的。
    AllowSorting:是否允许用户在受保护的工作表上进行排序。排序区域中的每个单元格必须是解除锁定的或取消保护的。
    AllowFiltering:是否允许用户在受保护的工作表上设置筛选。用户可以更改筛选条件,但是不能启用或禁用自动筛选功能。用户也可以在已有的自动筛选功能上设置筛选。
    AllowUsingPivotTables:是否允许用户在受保护的工作表上使用数据透视表。

     
  • UnProtect

    撤销保护工作表。
    如果在保护工作表时没有设置密码,则直接使用UnProtect即可;如果设置了密码,则需要在撤销保护工作表时指定保护密码,如:
    Ws.UnProtect(Password:="hhh")
     
  • Select
    选定并激活指定的工作表,如:Ws.Select

  • --  作者:Hyphen
    --  发布时间:2016/7/8 9:30:00
    --  
    参考http://www.foxtable.com/webhelp/scr/2121.htm

    用vba操作保护不能修改表格

    --  作者:rjh4078
    --  发布时间:2016/7/19 13:51:00
    --  
    使用这个用代码 打开excel的时候总是提示 已打开XX 请先关闭
    --  作者:rjh4078
    --  发布时间:2016/7/19 14:01:00
    --  
    Dim djna As String=args(0) \'\'第一个参数 单据名
    vars("文件路径")=""
    With Tables(djna)
        If .current IsNot Nothing Then
            Dim Book As New XLS.Book(Functions.Execute("打印模板缓存",djna))        
            Dim fl As String = ProjectPath & "Reports\\" & djna & ".xls"
            Book.Build() \'生成细节区
            Book.Save(fl)          
            Dim App As New MSExcel.Application
            App.Visible = True
            Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
            Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
            Ws.Protect(Password:="123")  \'以密码保护
            
          
        End If
    End With

    --  作者:rjh4078
    --  发布时间:2016/7/19 14:04:00
    --  
    代码如上 每次运行 提示已打开XXX 如何在打开之前判断下 
    --  作者:大红袍
    --  发布时间:2016/7/19 14:22:00
    --  

     参考代码

     

    http://www.foxtable.com/webhelp/scr/2126.htm

     


    --  作者:rjh4078
    --  发布时间:2016/7/19 15:11:00
    --  
    现在的问题是  程序提示文件已打开  但是实际上没有打开  进程里也没有
    --  作者:大红袍
    --  发布时间:2016/7/19 15:28:00
    --  
     做例子发上来测试。