找回密码
 加入
搜索
查看: 3613|回复: 3

[系统综合] 如何以只读方式ObjGet打开一个excel文件?

  [复制链接]
发表于 2017-6-8 10:42:21 | 显示全部楼层 |阅读模式
本帖最后由 ioripalm 于 2017-6-8 10:48 编辑

如何以只读方式ObjGet打开一个excel文件?
$lastSummaryXls = ObjGet(@ScriptDir & "" & $lastMonth.Xls)
        If @error Then MsgBox(16, 1, "Error")
        With $lastSummaryXls.Worksheets("Summary")
                $EmpList = .cells(1, 1).resize(.UsedRange.Rows.Count , .UsedRange.Columns.Count).value
                $EmpList = $lastSummaryXls.parent.application.transpose($EmpList) 
                ;_ArrayDisplay($EmpList)
                .parent.close(False)
        EndWith
以上代码经过测试如果打开的excel文件是受保护的,比如文件是网络下载的,或者是U盘里的,或者2010以上office版本打开97 office的xls文件,excel的默认安全选项会提示这个excel文件是受保护的,默认不可以修改(除非在office的选项-信任设置内将所有保护关闭)。
如果是使用excel手动打开这个文件,可以点击excel上方的protected view--edit anyway来解除保护(只需要设置一次,office会记住这个文件受信任)。再次使用au3读取excel就可以获取数据。
如果我通过ObjGet直接读取文件内容,就会返回@error
现在我想找个方法如何直接用au3的ObjGet来读取这个excel文件(只要读取数据),找了office的vbs帮助文档,所有的关于protect的方法都不适用。
请大家帮我看看怎么只读方式打开收保护的excel文件。


微软关于 受保护视图 的说明

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-6-8 12:51:51 | 显示全部楼层
javascript:void(0);
发表于 2017-6-10 21:32:10 | 显示全部楼层
保护方式打开是可以读取的,用workbooks.open(文件名,false,true)的方式打开,然后worksheets.copy复制全部工作表到新工作簿,关闭受保护的文件,新建的文件有完全的操作权限,编辑过后再保存为那个文件就可以了
发表于 2017-6-11 12:50:56 | 显示全部楼层
直接以只读方式打开就行了。如果文件已经被打开了,也无妨的。

$filePath=@ScriptDir&"\受保护的Excel.xls"
$oExcel = ObjCreate("Excel.Application")
$oExcel.Visible = True
$oExcel.DisplayAlerts = False
$oExcel.WorkBooks.Open($filePath, 3, 1);以只读方式打开
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-24 00:13 , Processed in 0.077210 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表