Использование функции для открытия и обновления значений во внешних книгах, но с возвратом ошибок источника - PullRequest
0 голосов
/ 11 декабря 2018

Я использовал функцию из другого вопроса StackOverflow (мне очень жаль, что я не могу найти оригинальный ответ!), Чтобы помочь пройти через несколько ячеек в столбце L, который содержит формулу, которая выплевывает нашу гиперссылкуПуть файла.Он предназначен для открытия каждой (рабочей книги), обновления значений, а затем сохранения и закрытия рабочей книги перед открытием следующей.См. Ниже.

Sub List_UpdateAndSave()
    Dim lr As Long
    Dim i As Integer
    Dim WBSsource As Workbook
    Dim FileNames As Variant
    Dim msg As String
    ' Update the individual credit models
    With ThisWorkbook.Sheets("List")
        lr = .Cells(.Rows.Count, "L").End(xlUp).Row
        FileNames = .Range("L2:L" & lr).Value
    End With
    For i = LBound(FileNames, 1) To UBound(FileNames, 1)
        On Error Resume Next
        If FileNames(i, 1) Like "*.xls*" Then
            Set WBSsource = Workbooks.Open(FileNames(i, 1), _
                                           ReadOnly:=False, _
                                           Password:="", _
                                           UpdateLinks:=3)
            If Err = 0 Then
                With WBSsource
                    'do stuff here
                    .Save
                    .Close True
                End With
            Else
                msg = msg & FileNames(i, 1) & Chr(10)
                On Error GoTo 0
            End If
        End If

        Set WBSsource = Nothing
    Next i
    If Len(msg) > 0 Then
        MsgBox "The Following Files Could Not Be Opened" & _
               Chr(10) & msg, 48, "Error"
    End If
End Sub

Проблема теперь в том, что я использую это для работы на сетевом диске, и в результате это вызывает проблемы с маршрутизацией в части Соединения / Редактировать ссылки.Каждый из файлов хранится в S:\..., который в результате использования формулы гиперссылки не сможет найти исходные данные.Ниже приведен пример изображения файла, который был открыт через ячейку гиперссылки из моей оригинальной книги.Когда я иду обновить его раздел Edit Links, он показывает эти ошибки.

Если я открою этот буквенный диск в Windows Explorer и найду файл, он будет работать без проблем.Открыть, Обновить значения> Сохранить> Закрыть, он говорит, что неизвестно ...

(но если я нажму здесь Обновить значения, они обновятся правильно.)

При открытии с использованием формулы гиперссылки в ячейке (также с указанием S:\..) он говорит, что содержит ссылки, которые не могут быть обновлены.Я выбираю редактировать ссылки, и все они "Ошибка: источник не найден".Расположение на них также начинается с \\\corp\..., а не S:\.

В любом случае, чтобы это исправить?Извиняюсь за длинный вопрос.

1 Ответ

0 голосов
/ 11 декабря 2018

Я добавляю это как ответ, так как он содержит код и немного длинен для комментария.
Хотя я не уверен, что это то, что вам нужно.

Код возьмет подключенный диск и вернет сетевой диск или наоборот для файлов Excel.DriveMap - это переменная, содержащая последнюю строку - вы можете захотеть адаптироваться в функцию.

Sub UpdatePath()

    Dim oFSO As Object
    Dim oDrv As Object
    Dim FileName As String
    Dim DriveMap As String

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    FileName = Range("A1")

    If InStr(oFSO.GetExtensionName(FileName), "xls") > 0 Then

        For Each oDrv In oFSO.drives
            If oDrv.sharename <> "" Then
                'Changes \\corp\.... to S:\
                If InStr(FileName, oDrv.sharename) = 1 Then
                    DriveMap = Replace(FileName, oDrv.sharename, oDrv.Path)
                End If

                'Changes S:\ to \\corp\....
'                If InStr(FileName, oDrv.Path) = 1 Then
'                    DriveMap = Replace(FileName, oDrv.Path, oDrv.sharename)
'                End If

            End If
        Next oDrv

    End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...