VBA-获取公式的完整路径以打开工作簿

时间:2018-11-22 12:08:46

标签: excel vba excel-vba

我在单元格A1中有一个公式引用了另一个打开的工作簿:

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

如果我现在使用Cells(1,1).Formula,我会得到这个公式。

如果我关闭工作簿,此公式将变为:

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

然后我用Cells(1,1).Formula来得到这个公式。

在工作簿仍处于打开状态时,是否有办法获取此公式的“完整路径”(好像另一个工作簿已关闭)?

我想将这些公式存储为文本,并在以后将其更改回公式。如果此时关闭工作簿,则转换回将无法进行。

2 个答案:

答案 0 :(得分:1)

此函数将返回传递给它的单元格公式中引用的工作簿的完整路径。

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

答案 1 :(得分:0)

我可以这样:

1)关闭第二本书,以显示完整路径,

2)然后进行查找/替换,并将所有“ =”替换为“ xyxy”

3)现在,您已拥有所有需要的文本信息,因此可以随意复制等-必要时删除xyxy,

4)使用查找/替换将“ xyxy”替换为“ =“,以使原始作品再次出现。