2015-01-30 7 views
0

У меня есть книга, в которой есть ссылки на количество других книг. В идеале я хотел бы закодировать: когда я открываю книгу, содержащую ссылки, будет обновлять ссылки, но только в том случае, если связанная с ней рабочая книга не открыта (на моем ПК или другом ПК пользователя в сети, что может доступ к нему). Это происходит потому, что:Код VBA для обновления ссылок, если ссылка на рабочую книгу закрыта

  • а), если книга уже открыть ссылку следует обновить в любом случае,
  • б) обновление ссылки на книги, которые уже открыты, кажется, вызывает ошибку.

Надеюсь, у меня есть смысл, пожалуйста, скажите мне, нет ли я. Спасибо.

+1

Вы писали код, чтобы начать? –

+0

Как вы хотите выяснить путь связанных книг? – blckbird

ответ

1

Попробуйте

Sub UpdateLinks() 
    Dim v As Variant, i As Long 
    v = ThisWorkbook.LinkSources(XlLink.xlExcelLinks) 
    For i = 1 To UBound(v) 
     If Not FileInUse(v(i)) Then 
      Workbooks.Open (v(i)) 
     End If 
    Next i 
    ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources 
End Sub 

Public Function FileInUse(sFileName) As Boolean 'Checks if a workbook is open 
    On Error Resume Next 
    Open sFileName For Binary Access Read Lock Read As #1 
    Close #1 
    FileInUse = IIf(Err.Number > 0, True, False) 
    On Error GoTo 0 
End Function 
Смежные вопросы