2016-08-03 2 views
2

Я работаю над процессом автоматизации отчета для своей работы. Один из финальных бит, над которым я хотел бы работать, - понять, возможно ли закрыть файл PDF, который открывается другим пользователем на другом компьютере (хотя и в той же сети). Я использовал учебники и написал следующие макросы и функции для успешного тестирования, если файл открыт, однако теперь я хочу знать, можно ли фактически закрыть файл из другого и удаленного места.Закройте файл Adobe Acrobat, открытый другим пользователем на другом компьютере (в той же сети)

Есть ли у кого-нибудь советы, как это сделать или если это возможно. Я видел похожие предметы для документов с закрытыми документами, но не документы 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 
+3

Я не знаю, возможно ли это или нет, но я, конечно, надеюсь на то, что это не так. Я бы не хотел использовать файл, а потом другой пользователь закрыл его. – YowE3K

+0

Да, возможно, если у вас есть доступ администратора –

+0

@SiddharthRout, предполагая, что у меня есть доступ к админу, что было бы лучшим способом его выполнить. – Rivers31334

ответ

3

Да, это возможно, если у вас есть Admin Rights (Phew!).

Чтобы вручную проверить его

  1. Windows нажмите кнопку Пуск | Выполнить | Cmd.exe
  2. Введите OpenFiles в командной строке и нажмите клавишу Enter
  3. Вы увидите список открываемых файлов/папок. Они будут перечислены как ID, Accessed By, Type, Open File (Path\executable)
  4. Для отключения Вы можете использовать идентификатор файла, имя пользователя или имя файла Как OpenFiles /Disconnect /ID 123

Теперь все это можно сделать с помощью VBA, если вы знаете, как оформить Команды DOS из VBA.

+0

Я думаю, что у Роберта Харви отличная работа. Извиняюсь, что я только что видел это, когда вы разместили это решение. Спасибо за помощь. – Rivers31334

+0

(a) Будет ли это работать на другом компьютере или вам нужно удалённо подключиться к компьютеру, на котором открыт файл, или, по крайней мере, быть зарегистрирован на компьютере (файловом сервере), на котором находится файл? (b) действительно ли он закрывает файл или он просто отключает соединение между файловым сервером (например) и компьютером пользователя, оставляя при этом пользователя чтение документа из кеша памяти? – YowE3K

+0

'1' Нет, вам не нужно удалять в' 2' Он закрывает файл –

Смежные вопросы