Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 关闭其他用户在不同计算机(同一网络)上打开的Adobe Acrobat文件_Vba_Excel - Fatal编程技术网

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

Vba 关闭其他用户在不同计算机(同一网络)上打开的Adobe Acrobat文件,vba,excel,Vba,Excel,我一直在致力于为我的工作自动生成报告。我想做的最后一点是了解是否有可能关闭另一个用户在不同计算机(尽管在同一网络上)打开的pdf文件。我使用了教程并编写了以下宏和函数来成功测试文件是否打开,但是,我现在想知道是否可以从其他远程位置关闭文件 有没有人对如何做到这一点有什么建议,或者如果可能的话。我在CloseExcel文档中看到过类似的项目,但在pdf文档中没有 'function to determine if file is open Function IsFileOpen(FileName

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

有没有人对如何做到这一点有什么建议,或者如果可能的话。我在CloseExcel文档中看到过类似的项目,但在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

是的,如果您拥有
管理员权限(Phew!)
,这是可能的

手动测试它

  • 单击Windows开始|运行| Cmd.exe
  • 在命令提示下键入
    OpenFiles
    ,然后按Enter键
  • 您将看到打开的文件/文件夹列表。它们将被列为
    ID
    访问者
    类型
    打开文件(路径\可执行文件)
  • 要断开连接,可以使用文件ID、用户名或文件名,如
    OpenFiles/disconnect/ID 123

  • 现在,如果您知道如何从VBA发出DOS命令,所有这些都可以从VBA中完成。

    我不知道这是否可行,但我当然希望不可行。我不喜欢使用一个文件,然后让其他用户在我身上关闭它。是的,如果你有管理员,这是可能的Access@SiddharthRout假设我有管理员权限,那么执行它的最佳方式是什么呢?@SiddharthRout Hm,给我一些背景,我在一个满墙都是监视器的房间里工作。我们从前一天开始就把报告放在屏幕上,为了不必每天都站起来穿过房间来关闭它,我希望能够远程关闭它。步行的代价很小,但如果我能绕开它,那就太好了。我可以向观众保证,从来没有人会使用pdf文档。@Rivers31334:更好的方法是在目标计算机上安装一个应用程序,每天自动打开正确的文档。我认为罗伯特·哈维(Robert Harvey)有一个很好的解决方法。很抱歉,我在您发布此解决方案时看到了这一点。感谢您的帮助。(a)这是否在其他计算机上工作,或者您是否必须远程登录到打开文件的计算机,或者至少登录到文件所在的计算机(文件服务器)?(b) 它是否真的关闭了文件,或者只是断开了文件服务器(例如)和用户计算机之间的连接,因此,让用户从内存缓存中读取文档?
    1
    否您不需要在
    2
    中进行远程操作,它会关闭文件。奇怪的是,即使计算机A上的管理员用户也可以看到服务器S上的文件,而服务器S上的文件是由计算机B上的用户通过简单的命令打开的。我原以为他们需要指定他们感兴趣的文件,或者文件所在的服务器,或者访问该文件的计算机。啊-我看到你提到过,他们可以只使用文件名来断开连接