ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 423|回复: 0

[原创] 通过EXCELVBA批量判断指定的PDF文件是否加密方法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-5-19 13:46 | 显示全部楼层 |阅读模式
本帖最后由 bluesky_0 于 2022-5-19 13:57 编辑

Private Sub CommandButton2_Click()
Dim PDF_NUM As Integer
II = Sheet1.Range("B62222").End(xlUp).Row
If II < 2 Then II = 2
Sheet1.Range("B2:B" & II).Clear
Sheet1.Range("D" & 1) = 0  '这个为了计算有多少PDF是加密的

For PDF_NUM = 2 To Sheet1.Range("E1") + 1'这个单元格存着有多少PDF需要判断的数值
Call check_security(PDF_NUM)
Next
MsgBox "OK"
End Sub

Sub check_security(II As Integer)
On Error GoTo NoSecurity
Dim oPDDoc As Acrobat.AcroPDDoc
Dim oPapp As Acrobat.AcroApp
Dim oJso As Object
Dim oSec As Object
Dim arrPolicies As String
'II = 2
Set oPapp = CreateObject("AcroExch.App")
Set oPDDoc = CreateObject("AcroExch.PDDoc")
        oPDDoc.Open (Sheet1.Range("F1") & "\" & Sheet1.Range("A" & II)) '里面的Sheet1.Range("F1")存的是PDF文件都在那个文件夹;地址是完全地址,比如“D:\新建文件夹”。
        Set oJso = oPDDoc.GetJSObject
        If (oJso.securityHandler) = Null Then
###'如果pdf文件没有加密就报错,说oJso.securityHandler什么不支持的属性。可是PDF文件加密就不报错了啊!!!晕啊。oJso.securityHandler出来的值居然是 "standard",不是 什么 true。。。
PDF 的官方API文档说不加密出来是 NULL值,GOOGLE也没用找到解决方法,倒是很多人问这个问题;
我为了用这个函数,我采用其中一个老外的方法 :On Error GoTo NoSecurity
而且发现,这个不能用 for next ,do循环,循环就报错。为了可以使用oJso.securityHandler方法,我用Call调用的方法。
期待高人解决这个PDF没有加密报错的问题。
####

NoSecurity:
        arrPolicies = "NO"
        Else
            arrPolicies = "YES" 'oJso.securityHandler
            Sheet1.Range("D" & 1) = Sheet1.Range("D" & 1) + 1 '这个为了计算有多少PDF是加密的
        End If

         Sheet1.Range("B" & II) = arrPolicies
        Set oJso = Nothing
        oPDDoc.Close
Set oPDDoc = Nothing
oPapp.Exit
Set oPapp = Nothing
End Sub

PDF 官方API文档

PDF 官方API文档

代码对应的EXCEL表内容截图

代码对应的EXCEL表内容截图
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-12 05:09 , Processed in 0.035814 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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