VFP如何判断Excel表是否有密码保护
我处理好多单位的Excel表,有的没有密码,有的打开时需要密码,请问VFP如何在打开Excel表前检查出那些表是需要密码的,那些是不需要密码的?
2018-08-07 11:43
2018-08-07 13:35
程序代码:
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
2018-08-08 10:33
2018-08-08 15:13
2018-08-08 19:03

2018-08-09 00:17

2018-08-09 00:24