我在单元格A1中有一个公式引用了另一个打开的工作簿:
= [book1.xlsb] Sheet1!$ A $ 1
如果我现在使用Cells(1,1).Formula
,我会得到这个公式。
如果我关闭工作簿,此公式将变为:
='C:\ path \ [book1.xlsb] Sheet1'!$ A $ 1
然后我用Cells(1,1).Formula
来得到这个公式。
在工作簿仍处于打开状态时,是否有办法获取此公式的“完整路径”(好像另一个工作簿已关闭)?
我想将这些公式存储为文本,并在以后将其更改回公式。如果此时关闭工作簿,则转换回将无法进行。
答案 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”替换为“ =“,以使原始作品再次出现。