乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel绝对路径引用怎么改成相对路径-excel相对路径链接,excel相对路径

excel绝对路径引用怎么改成相对路径-excel相对路径链接,excel相对路径

作者:乔山办公网日期:

返回目录:excel表格制作




。。。

想了一下,您的这个代码是一次性的。。。即意味着只在你本机上运行宏的时候运行一次,后面就不会运行了。那么超链接保存下来的信息就会被固定为最初的地址。

修改了一下你的代码:(主要部分注释一下便于大家的理解)

Sub Workbook_Open() '使用这个事件可以保证每次文档被打开的时候运行本宏。
Dim ws As Worksheet
Dim i As Integer
Dim ex As Boolean
i = 1
ex = False '是否已经存在“目录7a64e4b893e5b19e364”表
For Each ws In ThisWorkbook.Worksheets
If ws.Name = "目录" Then
ex = True
Exit For
End If
Next
If ex = False Then '如果不存在,则创建之。
ThisWorkbook.Worksheets.Add
Worksheets(i).Name = "目录"
End If
Worksheets("目录").Cells(i + 1, 1).Value = "序号"
Worksheets("目录").Cells(i + 1, 2).Value = "名称"
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "目录" Then
Worksheets("目录").Cells(i + 1, 1).Value = i - 1
Worksheets("目录").Cells(i + 1, 2).Value = Worksheets(i).Name

'其中iif语句为判断文档是否在盘符根目录下,即是否在 D:\ 之类的下面
Worksheets("目录").Hyperlinks.Add Cells(i + 1, 2), _
ThisWorkbook.Path & IIf(Right(ThisWorkbook.Path, 1) = "\", "", "\") & ThisWorkbook.Name, _
Worksheets(i).Name & "!A1", _
"单击跳转到" & Worksheets(i).Name, _
Worksheets(i).Name
End If
i = i + 1
Next
i = ThisWorkbook.Sheets.Count - 1
Worksheets("目录").Range("A3:A" & i + 2).HorizontalAlignment = xlCenter '这里直接使用Range的HorizontalAlignment相关属性是为了避免当前表不是“目录”时出错。下同。
Worksheets("目录").Range("B3:B" & i + 2).HorizontalAlignment = xlGeneral
Worksheets("目录").Range("B3:B" & i + 2).Font.ColorIndex = 5
Worksheets("目录").Range("B3:B" & i + 2).Font.Underline = xlUnderlineStyleNone
Worksheets("目录").Rows("2:2").Font.Bold = True
Worksheets("目录").Rows("2:2").HorizontalAlignment = xlCenter

End Sub

ps:使用此方法,需要在Excel开启VB宏,由此会带来很多安全隐患。根据微软Office2010的设置,文件的扩展名需要变为xlsm而不是xlsx,我不知道2003和2007是否也需要这么改。

如果不是特别需要,建议直接使用Excel的编辑超链接方法,里面有个链接到本文档中的位置选项。


自己研究一下,下面函数
INDIRECT 可以用这个写一个可变公式
HYPERLINK 可以用这个实现公式超链接
=CELL("filename",A1) 可以取得工作表完整路径
再配合一些提取函数就实现你要的了,比如MID,find等。
不过写起来挺累人的,要根据表格自己调试,哈

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网