[AHK]为excel生成sheet目录

本文介绍了一种在Excel中自动生成超链接目录的方法,通过VBS脚本实现快速导航至不同工作表,并在各工作表内添加返回首页的链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作中遇到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.youkuaiyun.com/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,"返回首页") 
}



在使用 AutoHotkey (AHK) 对 Excel 文件进行排序时,可以通过调用 Excel 的 COM 接口来实现自动化操作。以下是一个完整的示例脚本,展示如何使用 AHKExcel 表格中的数据进行排序。 ### 示例脚本 假设我们要对 Excel 工作表中 A2:D10 的数据区域按照第二列(B 列)进行升序排序: ```ahk ; 启动 Excel 应用程序(如果尚未运行) xl := ComObjCreate("Excel.Application") ; 添加一个新的工作簿 wb := xl.Workbooks.Add() ; 选择第一个工作表 ws := wb.Sheets[1] ; 使 Excel 可见(可选) xl.Visible := True ; 假设我们在 A2:D10 区域中写入一些示例数据 ws.Range("A2:D10").Value := [ ["张三", 25, "男", "北京"], ["李四", 30, "女", "上海"], ["王五", 22, "男", "广州"], ["赵六", 28, "女", "深圳"], ["孙七", 35, "男", "杭州"], ["周八", 27, "女", "南京"], ["吴九", 29, "男", "成都"], ["郑十", 24, "女", "武汉"], ["钱十一", 31, "男", "西安"] ] ; 对 A2:D10 区域按照第二列(B 列)升序排序 ws.Range("A2:D10").Sort(Key1:=ws.Range("B2"), Order1:=1) ; 1 表示升序,2 表示降序 ; 释放对象 wb := "" xl := "" ``` ### 脚本说明 - `ComObjCreate("Excel.Application")` 创建一个 Excel 应用程序对象。 - `Workbooks.Add()` 添加一个新的工作簿。 - `Sheets[1]` 获取第一个工作表。 - `Range("A2:D10").Value` 用于写入示例数据。 - `Sort` 方法用于对数据进行排序,`Key1` 指定排序依据的列,`Order1` 指定排序顺序(1 为升序,2 为降序)。 ### 注意事项 - 在运行脚本之前,请确保已安装 AutoHotkey 并正确配置开发环境。 - Excel 应用程序在脚本执行期间将保持运行状态,脚本结束后不会自动关闭 Excel,可以手动关闭或在脚本中添加 `xl.Quit()` 来退出 Excel。 - 如果需要对其他列或多个列进行排序,可以在 `Sort` 方法中添加更多参数,例如 `Key2`、`Order2` 等。 通过上述脚本,可以实现对 Excel 数据的自动化排序操作,提升工作效率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuyukuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值