EXCEL表格中建立目錄

#IfWinActive,ahk_exe EXCEL.EXE

F11::

oExcel :=Excel_Get()? ? ? ? ;創(chuàng)建對(duì)象

;創(chuàng)建gui

Gui,Destroy

Gui Add, ListView, x1 y2 w209 h129 +Grid +NoSortHdr, <樣式>

Gui Add, Text, x5 y135 w200 h23 +0x200, 注:[目錄] 為 目的單元格

Gui Add, CheckBox, x5 y160 w162 h23 vaddrow Checked , 是否新增行 > 返回首頁

Gui Add, Button, x12 y185 w80 h23 g提示框取消, 取消

Gui Add, Button, x124 y185 w80 h23 g提示框確認(rèn), 確認(rèn)

LV_Add(,"? ? ? ? ? [目錄]")

LV_Add(,"? ? ? ? <此為空行>")

LV_Add(,"? ? ? ? 第1張表")

LV_Add(,"? ? ? ? 第2張表")

LV_Add(,"? ? ? ? 第3張表")

Gui, +AlwaysOnTop +ToolWindow? ? ? ? ? ;-Caption

;Gui Color, 0x4DA6FF

Gui Show, w212 h210, 提示框

return

提示框取消:

oexcel :=""

? Gui,Destroy

return

提示框確認(rèn):

? Gui,Submit

? Gui,Destroy

? offset:=oExcel.ActiveCell.row()

? addr:=oExcel.ActiveCell.address(,0) ;column() 獲取列名字

? StringSplit,addr,addr,$

? oExcel.ActiveCell.value:="[目錄]"

? for Sheet in oExcel.Sheets

? {

? ? If (Sheet.name=oExcel.ActiveSheet.Name)

? ? ? ? continue

? ? oExcel.ActiveSheet.Hyperlinks.Add(oExcel.ActiveCell.Offset(A_Index,0),"","'"Sheet.name "'!A1","單擊到 " Sheet.name,Sheet.name)

? ? if !addrow? ? ? ;是否勾選需要增加行,來添加? '返回首頁'

? ? Sheet.Hyperlinks.Add(oExcel.Sheets(A_index).cells(1,1),"","'"oExcel.ActiveSheet.Name "'!" addr1 A_Index+offset,"單擊到 " oExcel.ActiveSheet.Name,"返回首頁") ;這里的“首頁!B”要和你所命名的一致。

? ? else

? ? 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,"單擊到 "? oExcel.ActiveSheet.Name,"返回首頁")? ? ? ? ;單獨(dú)新增一行? 返回首頁,若不新增用上一行代碼

? }

oExcel :=""

return

; Excel_Get by jethrow (modified)

; Forum:? ? https://autohotkey.com/boards/viewtopic.php?f=6&t=31840

; Github:? https://github.com/ahkon/MS-Office-COM-Basics/blob/master/Examples/Excel/Excel_Get.ahk

Excel_Get(WinTitle:="ahk_class XLMAIN", Excel7#:=1) {

? ? static h := DllCall("LoadLibrary", "Str", "oleacc", "Ptr")

? ? WinGetClass, WinClass, %WinTitle%

? ? if !(WinClass == "XLMAIN")

? ? ? ? return "Window class mismatch."

? ? ControlGet, hwnd, hwnd,, Excel7%Excel7#%, %WinTitle%

? ? if (ErrorLevel)

? ? ? ? return "Error accessing the control hWnd."

? ? VarSetCapacity(IID_IDispatch, 16)

? ? NumPut(0x46000000000000C0, NumPut(0x0000000000020400, IID_IDispatch, "Int64"), "Int64")

? ? if DllCall("oleacc\AccessibleObjectFromWindow", "Ptr", hWnd, "UInt", -16, "Ptr", &IID_IDispatch, "Ptr*", pacc) != 0

? ? ? ? return "Error calling AccessibleObjectFromWindow."

? ? window := ComObject(9, pacc, 1)

? ? if ComObjType(window) != 9

? ? ? ? return "Error wrapping the window object."

? ? Loop

? ? ? ? try return window.Application

? ? ? ? catch e

? ? ? ? ? ? if SubStr(e.message, 1, 10) = "0x80010001"

? ? ? ? ? ? ? ? ControlSend, Excel7%Excel7#%, {Esc}, %WinTitle%

? ? ? ? ? ? else

? ? ? ? ? ? ? ? return "Error accessing the application object."

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容