excel 通过VBA截断创建的超链接

p1tboqfb  于 2023-06-07  发布在  其他
关注(0)|答案(3)|浏览(261)

下面是我在一个受保护的工作表上的代码的一部分,用于取消保护工作表,创建一个文件夹,创建一个超链接到它,打开文件夹并重新保护工作表。
在我保存电子表格之前,这一切都很正常--然后它将所有链接都截断到..\..\..\..\opserv_group\Enforcement\NRSWA\Licences...,而不是\\Wbcphfil01.wbc.lan\dts\Groups\Operational_Services\opserv_group\Enforcement\NRSWA\Licences...,使它们全部无效。有人能帮忙吗?

If .Value = "TTRO - Emergency" And Cells(i, 6) <> "" And Cells(i, 14) <> "" Then
         ActiveSheet.Unprotect Password:="Licence19"
         ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 4), Address:="\\Wbcphfil01.wbc.lan\dts\Groups\Operational_Services\opserv_group\Enforcement\NRSWA\Licences\TTRO\Applications 2019-20\" & Cells(i, 4) & " (" & Cells(i, 12) & ")", TextToDisplay:=.Value
         dirName = Cells(4, i).Values
         MkDir ("\\Wbcphfil01.wbc.lan\dts\Groups\Operational_Services\opserv_group\Enforcement\NRSWA\Licences\TTRO\Applications 2019-20\" & Cells(i, 4) & " (" & Cells(i, 12) & ")")
         Call Shell("explorer.exe" & " " & "\\Wbcphfil01.wbc.lan\dts\Groups\Operational_Services\opserv_group\Enforcement\NRSWA\Licences\TTRO\Applications 2019-20\" & Cells(i, 4) & " (" & Cells(i, 12) & ")", vbNormalFocus)
         ActiveSheet.Protect Password:="Licence19", AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowInsertingColumns:=False, AllowInsertingRows:=False, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=False, AllowDeletingRows:=False, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=False
ql3eal8s

ql3eal8s1#

这可能是由设置“保存时更新链接”引起的,因为这是在保存工作簿时发生的。
在Excel中,尝试以下操作:
1.进入【文件】>【选项】>【高级】
1.找到部分一般(几乎在底部)
1.单击按钮Web选项
1.进入【文件】选项卡
1.取消选中复选框保存时更新链接

8zzbczxx

8zzbczxx2#

存储工作簿时,Excel将尽可能将所有超链接路径转换为相对路径。* 相对 * 表示相对于 * 超链接库 *。默认情况下,此 Hyperlink Base 是工作簿的路径。
因此,如果您的工作簿是C:\test\wb1.xlsx,并且您的超链接指向C:\test\subtest\testfile.txt,则在存储工作簿之后,超链接将更改为.\subtest\testfile.txt。如果您将整个文件夹C:\test移动到不同的位置,但如果您只移动工作簿(或将其发送给其他人),则会很方便。
为了防止这种情况,您可以将“超链接库”更改为“不可能”。该设置可以在Excel中找到,在屏幕右侧的文件->信息下(在属性下)。您可以在此处更改它,也可以使用BuiltinDocumentProperties通过VBA更改它:

activeworkbook.BuiltinDocumentProperties("Hyperlink Base") = "ABC"

现在,当保存工作簿时,它将检查超链接是否相对于路径"ABC",如果不是,则将它们存储为不变。

wlzqhblo

wlzqhblo3#

如果你不想像我一样弄乱设置,只需存储屏幕提示的完整路径。

ActiveSheet.Hyperlinks.Add targetCell, path, ScreenTip:=path

当需要调用原始路径时,使用相同的属性:

Debug.Print ActiveCell.Hyperlinks(1).ScreenTip

就是这样!

相关问题