[AHK]为excel生成sheet目录

92 篇文章 3 订阅
65 篇文章 2 订阅

工作中遇到excel有n多sheet,而excel的sheet浏览条比较短,能显示的sheet页面数目有限,不方便使用。


【需求】

在首页中生成目录,每个目录项对应一个sheet,点击可以跳转:


在每个sheet中有返回首页的超链接:



函数参数说明:内部跳转需要用SubAddress,外部跳转则用Address

Hyperlinks.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay)


遇到sheet名中有#时,需要用单引号括起表名:



最新版如下:

;作者:sunwind
;版本:1.2
;时间:2017年10月23日14:55:35
;功能:为excel生成超链接目录(在首页点击某位置后运行本脚本)
;说明:将多个sheet的名称作为目录项,点击目录项可以跳转到对应的sheet上,在每个sheet上也生成返回首页的超链接。

; 1.0对于有#号的sheet名予以支持。
; 1.1首页的名称不限于“首页”
; 1.2在每个sheet增加一行写返回首页链接,以免覆盖原来的内容。
;最新版本发布地址:http://blog.csdn.net/liuyukuan/article/details/78314237

oExcel :=   ComObjActive("Excel.Application")
offset:=oExcel.ActiveCell.row()
addr:=oExcel.ActiveCell.address(,0) ;column() 获取列名字
StringSplit,addr,addr,$
;~ MsgBox % oExcel.ActiveSheet.Name

oExcel.ActiveCell.value:="[目录]"
for Sheet in oExcel.Sheets
{

	;目录项目中不含“首页”
	if (Sheet.name=oExcel.ActiveSheet.Name)
		continue
	;用Hyperlinks函数生成目录项
	;Hyperlinks.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay)
	oExcel.ActiveSheet.Hyperlinks.Add(oExcel.ActiveCell.Offset(A_Index,0),"","'" Sheet.name "'!A1","Click here to see " Sheet.name,Sheet.name)
	;每个sheet增加返回目录的超链接	
	oExcel.Sheets(A_index).Rows("1:1").EntireRow.Insert
	Sheet.Hyperlinks.Add(oExcel.Sheets(A_index).cells(1,1),"",oExcel.ActiveSheet.Name "!" addr1 A_Index+offset,"Click here to see"  oExcel.ActiveSheet.Name,"返回首页") 
}



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值