現在我們系統中用到了大量的EXECL做報表﹐但發現有操作人員私自修改打印出來的報表﹐能不能用VB控制﹕鎖死所有的功能﹐只保留"打印"功能與"打印預覽"功能﹐即不能修改導出來的數據。

解决方案 »

  1.   

    只要能夠把EXCEL里的以下功能屏蔽也行﹕選擇(Ctrl+a)﹐復制(Ctrl+c),急。
    請各位幫忙﹐謝謝﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗
      

  2.   

    这个比较困难
    报表导出的是一个.xls,如果人家用Excel打开修改,你也拦不住啊
      

  3.   

    可以实现,不过会有副作用,就是其它的excel文件都不能使用其它功能了。
    我也和你一样遇到这样的问题,所以不建议你直接锁定其它的功能。
    建议在代码中给表格设定一个保护密码,防止更改。
    由于身边没有IDE,不能给你代码,自己搜索一下吧!
      

  4.   

    現是設了保護密碼﹐他在本EXCEL中是不能修改﹐但他可以將其全部拷出﹐在做修改。
    只要能夠把EXCEL里的以下功能屏蔽就可以﹕選擇(Ctrl+a)﹐復制(Ctrl+c),急。
    請各位幫忙﹐謝謝﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗﹗
      

  5.   

    这样试试吧!
    添加一个宏:
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
        Excel.ActiveSheet.Range("A1").Select
    End Sub
    然后在工具->VBAProject属性->保护 中锁定工程就可以啦!
      

  6.   

    Pivate Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
        Excel.ActiveSheet.Range("A1").Select
    End Sub
    ----------------------------------------------------------
    這個怎樣用VB寫宏﹐謝謝﹗
      

  7.   

    sorry!我要走了,下午再告诉你!
      

  8.   

    Application.OnKey "^A", "" '屏蔽Ctrl+a
    Application.OnKey "^C", "" '屏蔽Ctrl+c
      

  9.   

    动态添加宏指令:
    dim excelapp as new excel.application
    dim md as vbcomponent
    dim lstrtmp as string
    set md=excelapp.vbe.vbproject("ThisWorkbook").vbComponents.Add(Vbext_ct_stdmodule)
    lstrtmp="Pivate Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)"
    lstrtmp=lstrtmp & chr(10) & "Excel.ActiveSheet.Range("A1").Select" & chr(10) & "End Sub"
    md.codemodule.addfromstring lstrtmp
      

  10.   

    首先,打开模板时(xlt是模板路径及完整名称的字符串)
    Workbooks.Open FileName:=xlt, Editable:=False   向报表填数完毕后直接打印预览
    ActiveWindow.SelectedSheets.PrintPreview用户看到的只有可打印内容
    还有把你的模板保护起来,windows可以做到
      

  11.   

    讓excel打開后直接進入"打印預覽"﹐關閉"打印預覽"后關閉excel!!
    ActiveWindow.SelectedSheets.PrintPreview
    wkbk.close false