| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
大量收QQ微信精准粉/交友粉,非诚勿扰千里之行 始于足下
共有 366 人关注过本帖
标题:VFP如何判断Excel表是否有密码保护
只看楼主 加入收藏
fnlsgjb
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-1-10
结帖率:50%
  已结贴   问题点数:10  回复次数:7   
VFP如何判断Excel表是否有密码保护
我处理好多单位的Excel表,有的没有密码,有的打开时需要密码,请问VFP如何在打开Excel表前检查出那些表是需要密码的,那些是不需要密码的?
2018-08-07 11:43
厨师王德榜
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:451
专家分:1603
注 册:2013-2-16
  得分:2 
回复 楼主 fnlsgjb
这些文件中,凡有密码的文件,是否具有相同的密码?
2018-08-07 13:35
厨师王德榜
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:69
帖 子:451
专家分:1603
注 册:2013-2-16
  得分:0 
可以利用 对象的OPEN方法打开,其中有一个特性是比较有用的:如果某个电子表格本身是无密码的,用带密码的打开语句去打开他,也不会报错。
写一个示例程序如下:
程序代码:

CLOSE DATABASES ALL
CLEAR  ALL
DIMENSION  f0[2]  as String
LOCAL i as Integer
LOCAL ox as Object
CREATE CURSOR OpenPswdErr(filename c(240))  &&  用于记录哪些文件未能打开。
F0[1]="C:\样机寄售库存.xlsx"  &&  假定某文件夹下的文件名已经获取,保存在数组f0中,
F0[2]="C:\样机寄售库存123456.xlsx"  &&  其中这个文件是需要密码的。
ox=CREATEOBJECT('Excel.Application')
FOR i=1 TO ALEN(F0)
    TRY
        ox.Workbooks.Open(F0[i],,,,654321)  && 用密码654321打开Excel,若文件本身无密码,本句也不会报错。
* 如果用这句:ox.Workbooks.Open(f0[i]) ,则遇到含密码的文件时,会弹出令人不快的对话框。
* 故无论文件本身有无密码,利用“若文件本身无密码,本句也不会报错。”的特性,我们均用上句去打开他。
        IF ox.ActiveWorkbook.Sheets.Count>0 THEN
            MESSAGEBOX('Open Successful')
        ELSE
            MESSAGEBOX('Open Error!')        
        ENDIF
    CATCH TO errmsg
    IF errmsg.ErrorNo<>1429 THEN  &&  记录其它错误,
        MESSAGEBOX('错误号:' + STR(errmsg.ErrorNo) + CHR(10) + ;
          '错误信息:' +  errmsg.Message + CHR(10) + ;
          '程序行号:' +  STR(errmsg.LineNo) + CHR(10) + ;  
          '出错过程:' +  errmsg.Procedure + CHR(10) + ;
          '出错语句:' +  errmsg.LineContents)
    ELSE
        INSERT INTO OpenPswdErr (filename) VALUES (F0[i])  &&  如果未正常打开,则追加进记录中。
    ENDIF
    FINALLY
    ox.quit
    ENDTRY
ENDFOR
IF RECCOUNT('OpenPswdErr')>0 THEN
    SELECT OpenPswdErr
    BROWSE  TITLE '因密码错误,未能打开的文件:'
ELSE
    USE IN OpenPswdErr
ENDIF

2018-08-07 13:52
星光悠蓝
Rank: 8Rank: 8
来 自:山水甲天下
等 级:贵宾
威 望:29
帖 子:311
专家分:768
注 册:2010-1-11
  得分:2 
可以通过工作表的ProtectContents属性判断是否为保护状态。
2018-08-08 10:33
hyswcyh
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:378
专家分:888
注 册:2004-11-23
  得分:2 
路过
2018-08-08 15:13
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:19
帖 子:596
专家分:1154
注 册:2009-3-1
  得分:2 
留足
2018-08-08 19:03
红星二锅头
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:38
帖 子:445
专家分:670
注 册:2016-8-25
  得分:2 
oExcel.ActiveSheet.Protect('MyPassword')  && 加密码
oExcel.ActiveSheet.Unprotect('MyPassword')  && 去密码

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2018-08-09 00:17
红星二锅头
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:38
帖 子:445
专家分:670
注 册:2016-8-25
  得分:0 
oExcel.workbooks.open(,,,,password)  && 第五个参数是密码

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2018-08-09 00:24







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022720 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved