关闭其他用户在不同计算机(同一网络)上打开的Adobe Acrobat文件

时间:2016-08-03 20:20:28

标签: excel vba excel-vba

我一直致力于为我的工作自动化报告的流程。我想要处理的最后一点是了解是否可以关闭由另一台用户在另一台计算机上打开的pdf文件(尽管在同一网络上)。我已经使用了教程并编写了以下宏和函数来成功测试文件是否打开,但是,我现在想知道是否可以从不同的远程位置实际关闭文件。

有没有人对如何做到这一点有任何建议,或者是否有可能。我已经看到了类似的关闭excel文档的项目,但没有看到pdf文档。

'function to determine if file is open
Function IsFileOpen(FileName As String)

Dim ff As Long, ErrNo As Long

On Error Resume Next
ff = FreeFile()
Open FileName For Input Lock Read As #ff
Close ff
ErrNo = Err
On Error GoTo 0

'select case depending on if file is open or not
Select Case ErrNo
Case 0:    IsFileOpen = False
Case 70:   IsFileOpen = True
Case Else: Error ErrNo

End Select

End Function



'method to close DOR in pdf form if it is already open
Sub closeAcrobat()

Dim sStatus

sStatus = IsFileOpen("M:\Daily_Outage_Report\Active\Operations_Daily_Outage_Report_" _
& Format(Date, "yyyy-mm-dd") & ".pdf")

If sStatus = True Then
    MsgBox "file is open"
Else
    MsgBox "file is not open"
End If

End Sub

1 个答案:

答案 0 :(得分:3)

是的,如果你有Admin Rights (Phew!)可以。

手动测试

  1. 单击Windows开始|运行| cmd.exe的
  2. 在命令提示符下键入OpenFiles,然后按Enter键
  3. 您将看到已打开的文件/文件夹列表。它们将列为IDAccessed ByTypeOpen File (Path\executable)
  4. 要断开连接,您可以使用文件ID,用户名或文件名,如OpenFiles /Disconnect /ID 123
  5. 如果您知道如何从VBA发出DOS命令,现在可以从VBA完成所有这些。