Office中国论坛/Access中国论坛

标题: 怎样才能让EXCEL文档只能在特定的计算机打开 [打印本页]

作者: GAOZHONG    时间: 2011-5-19 10:56
标题: 怎样才能让EXCEL文档只能在特定的计算机打开
新手请教:
公司办公用的文档,为了防止被拷贝,所以希望当EXCEL文档只能在指定的计算机上打开,在其它计算机上打不开,该怎样写代码?请大家给予指点,先谢了。
作者: hjb016    时间: 2011-5-19 11:02
excel比较少用,你可以给Excel加密.
作者: GAOZHONG    时间: 2011-5-19 11:21
回复 hjb016 的帖子

因为这个文档会有多个人用到,所以加密也没用,用的人肯定有密码,打开之后就可以取消密码或创建无密码的副本。但还是谢谢你。
作者: pureshadow    时间: 2011-5-19 11:54
写代码用什么用呢?别人打开时禁用宏好了,还不如把后缀名给去掉,再取个古怪点的名字,让别人一看就以为是病毒不敢打开。
作者: GAOZHONG    时间: 2011-5-19 12:04
回复 pureshadow 的帖子

我的想法是打开时用代码自动判断当前计算机名是不是指定的计算机,符合的话就打开文档,不符合就自动关闭文档。但是我不知道怎样写获取当前计算机名的代码。
作者: qczvba    时间: 2011-5-19 17:06
可以测试同目录下有没有指定的文件,若有,则打开,则反之。也是一个思路,不过EXCEL安全性比较脆弱。
作者: roych    时间: 2011-5-20 11:38
看样子,非要Roy出手不可了~~~(*^__^*) 嘻嘻……
一般来说,思路如下:
1、非要对方启用宏(如果禁用了,神马都是浮云)。因此需要写一个Excel 4.0的宏命令来处理。在此感谢百度文库的网友提供的程序(原教程应该是源于ExcelHome的一本电子书)!
2、启用宏之后,开始执行过程,获取电脑名,符合的就打开,不符合的则关闭。
获取电脑名的代码可以这样写(API函数没试过,貌似不能直接在Excel里直接运行):
  1. Sub test()
  2. Dim wshnetwork, info As String
  3. Set wshnetwork = CreateObject("WScript.Network")
  4. 'If wshnetwork.computername <> "2LXPDH-ROYCH" Then '这一行改为您的文件名
  5. 'ThisWorkbook.Close
  6. 'End If
  7. End Sub
复制代码
此外,写一个过程来隐藏宏程序会更好些。废话少说,详见附件(当然这也只是防君子不防小人的做法啦,如果真的有心破解的话,总有高手能完成的)。
[attach]45630[/attach]

作者: GAOZHONG    时间: 2011-5-22 20:33
谢谢

作者: lastmem    时间: 2011-5-28 13:02
写的很详细,学习中~~
作者: miracle-y    时间: 2011-5-28 14:06
高手啊 学习了
作者: 方漠    时间: 2011-5-29 09:37
谢了,收藏了.

不过貌似这些代码在EXCEL2007下没有多大用处了.
作者: roych    时间: 2011-5-31 02:29
回复 方漠 的帖子

在2007版本下,如果能按tanhong帖子的示例:EXCEL安全措施实例——大家可以试着破解
那样做的话,安全性将大大提升。不过,我对于这方面的研究较少。
作者: joyark    时间: 2011-5-31 21:07
高手啊 学习了

作者: qczvba    时间: 2011-6-4 17:01
老刀同志的宏,工程密码一移去,代码就OK了。难防。。。。
作者: wmq_zizy    时间: 2014-10-29 14:10
thanks a lot
作者: sglch1023    时间: 2014-11-12 19:22
写的很详细,学习中~~
作者: 软件中国    时间: 2015-3-23 15:54
楼上都是高手,厉害




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3