VBA - Получить полный путь формулы, чтобы открыть книгу - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть формула в ячейке A1, которая ссылается на другую открытую книгу:

= [book1.xlsb] Sheet1! $ A $ 1

Если я сейчас использую Cells(1,1).Formula, я получаю точноэта формула.

Если я закрою книгу, эта формула изменится на:

= 'C: \ path \ [book1.xlsb] Sheet1'! $ A $ 1

и я получаю эту формулу, используя Cells(1,1).Formula.

Есть ли способ получить «полный путь» этой формулы (как если бы другая рабочая книга была закрыта), пока рабочая книга все еще открыта?

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

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Эта функция вернет полный путь к книге, на которую есть ссылка в формуле переданной ей ячейки.

Public Function GetFUllPath(r As Range) As String
Dim S As String
Dim str_filename
Dim fullpath As String
S = r.Formula
Select Case Mid(S, 3, 1)
     Case ":", "\"   'already has full path
     S = Left(S, InStr(S, "[") - 1) 'so just deduct rest of formula
     S = Replace(S, "=", "") 'strip out =
     fullpath = S
Case Else
    S = Mid(S, InStr(S, "[") + 1, InStr(S, "]") - InStr(S, "[") - 2) 'pull workbook name from inside []
    If InStr(S, ".") > 0 Then S = Left(S, InStr(S, ".") - 1)

    Dim wb As Workbook
    For Each wb In Workbooks
        str_filename = wb.Name
                str_filename = Left(str_filename, InStr(str_filename, ".") - 1) 'no file extension ?
        If str_filename = S Then

            fullpath = wb.Path
            Exit For
        End If
    Next wb
End Select
GetFUllPath = fullpath
End Function
0 голосов
/ 22 ноября 2018

Я бы сделал это следующим образом:

1) закрыв вторую книгу, чтобы отобразился полный путь,

2) затем выполнил поиск / замену и заменил все "="с помощью "xyxy"

3) теперь у вас есть вся необходимая информация в виде текста, чтобы вы могли копировать ее и т. д. по желанию - при необходимости удалите xyxy,

4) используйте поиск / замену для замены"xyxy" с "=", чтобы снова сделать оригинальную работу.

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