У меня есть две книги на общем сетевом диске:открытия/закрытия рабочей книги и Обновить соединения
- Учебное пособие А (таблица)
- Учебное пособие В (Сводная таблица -связных к источнику Workbook A)
Я пытаюсь, когда открыт Workbook B, запустить макрос и сделать это:
- Unprotect определенный рабочий лист на Workbook B
- Если рабочая книга А Open, обновить подключения к данным на рабочих книги B
- Если рабочая книга замкнутость, открытый Рабочий и обновить подключения к данным на рабочих книги B, затем закрыть учебное пособие А.
- Protect определенной таблицы на Workbook B
Приведенный ниже код работает в большинстве сценариев при тестировании до сих пор, но если кто-то пытается открыть книгу B на своем компьютере, когда у кого-то есть рабочая книга A, открытая на другом компьютере, она открывает книгу A как прочитанную - только файл и держит его открытым на своем компьютере. Мне нужно, чтобы он закрылся на своем компьютере и сохранил первоначальный доступ, который находится на другом компьютере.
Public Sub RefreshPvt()
ThisWorkbook.Worksheets("Sheet1").Unprotect
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim wkb As Workbook
If IsFileOpen("S:\\Testing\Job Closeout Status Test.xlsx") Then
ThisWorkbook.RefreshAll
Else
Set wkb = Workbooks.Open(filename:="S:\\Testing\Job Closeout Status Test.xlsx")
ThisWorkbook.RefreshAll
wkb.Close SaveChanges:=False
End If
ThisWorkbook.Worksheets("Sheet1").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next ' Turn error checking off.
filenum = FreeFile() ' Get a free file number.
' Attempt to open the file and lock it.
Open filename For Input Lock Read As #filenum
Close filenum ' Close the file.
errnum = Err ' Save the error number that occurred.
On Error GoTo 0 ' Turn error checking back on.
' Check to see which error occurred.
Select Case errnum
' No error occurred.
' File is NOT already open by another user.
Case 0
IsFileOpen = False
' Error number for "Permission Denied."
' File is already opened by another user.
Case 70
IsFileOpen = True
' Another error occurred.
Case Else
Error errnum
End Select
End Function
Подождите, почему вы хотите, чтобы открыть Рабочему в новом экземпляре? Нет абсолютно никаких оснований для этого, и это может вызвать некоторые проблемы. Так зачем это делать? – vacip
Не думаю, что вам нужно открыть книгу. Тем не менее, открытие его в ** другом экземпляре Excel ** похоже на открытие его на другом компьютере. Не имеет смысла и не имеет никакого эффекта. Если вы хотите открыть его, просто откройте его в том же экземпляре Excel, где находится книга B. – vacip
Хорошо. Мне не нужно его открывать в новом экземпляре, просто открыв его, когда я обновляю соединение. – DigitalSea