自動設定Excel中的超連結屬性
前段時間為了設計程式碼從程式碼網站管理員那裡要來了程式碼的說明,包括兩部分,一部分是一個程式碼目錄,是一個Excel檔案裡面有兩列資料,一列程式碼,一列程式碼說明,另一部分是兩千多個Excel檔案,每個檔案都是某個程式碼的詳細說明,並且每個檔案都以程式碼名命名,我們希望在閱讀程式碼目錄時如果想了解一個程式碼的具體含義,可以方便地找到和開啟這個程式碼說明檔案,用超連結的方式可以很好地解決這個問題,但是不可能手動地對程式碼目錄檔案的每一格單元格進行超連結設定,下面是利用powerbuilder程式設定Excel目錄檔案中每一個單元格的超連結屬性的方法。
用程式操作Excel一般都是通過VBA來實現的,對某個單元格的超連結屬性的設定是用
語法
object.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay)
object必選。該表示式返回 Hyperlinks物件。
Anchor Object 型別,必選。超級連結的位置。可為 Range物件或 Shape物件。
Address String 型別,必選。超級連結的地址。
SubAddress Variant 型別,可選。超級連結的子地址。
ScreenTip可選 Variant型別。當滑鼠指標停留在超級連結上時所顯示的螢幕提示。
TextToDisplay
具體實現採用了下面的指令碼:
STRING ls_file//需要開啟的檔名
STRING ls_Anchor// Object 型別,必選。超級連結的位置。可為 Range 物件或 Shape 物件。
STRING ls_Address//String 型別,必選。超級連結的地址。
FOR li_i = 2 to 2351//程式碼目錄中的程式碼有2351行
ls_Anchor = "B"+string(li_i)//要設定的但也格,程式碼目錄檔案中的程式碼存放在第二列,即B列,li_i為行號
ls_Address = "Store/"+ls_file+".XLS"//
IF FileExists (ls_Address) THEN
ole_excel.Worksheets(1).Hyperlinks.Add(ole_excel.Worksheets(1).Range(ls_Anchor),ls_Address)
END IF
NEXT
另外因為要操作EXCEL,所以在設定超連結屬性時,要先建立一個OLE物件,和EXCEL進行連線,具體指令碼如下:
ole_excel = CREATE OLEObject //建立OLE物件
li_rtn = ole_excel.ConnectToObject("","Excel.Application")//聯接EXCEL
//如果Excel還沒有開啟,則新建。
IF li_rtn <> 0 THEN
li_rtn = ole_excel.ConnectToNewObject("Excel.Application")
//新建EXCEL失敗,提示錯誤,退出函式
IF li_rtn <> 0 THEN
MessageBox('匯出錯誤','無法連線EXCEL!~n錯誤號:' + String(li_rtn),Stopsign!)
DESTROY ole_excel
RETURN 0
END IF
END IF
//ls_currentpath = GetCurrentDirectory()
IF NOT FileExists (ls_filename) THEN
MessageBox("匯出","制定的excel檔案損毀或丟失!~匯出失敗!",exclamation!)
//斷開與EXCEL的聯接
ole_excel.DisconnectObject()
//登出OLE物件
DESTROY ole_excel
RETURN 0
END IF
ole_excel.Workbooks.Open(ls_filename)
ole_excel.Visible = TRUE
在正常設定完超連結屬性後,要斷開和EXCEL的連線,並登出OLE物件
//斷開與EXCEL的聯接
ole_excel.DisconnectObject()
//登出OLE物件
DESTROY ole_excel
通過以上的設定,在閱讀程式碼目錄檔案時,如果想了解某個程式碼的詳細說明,直接單擊該程式碼說明,就可以開啟這個程式碼的詳細說明的EXCEL檔案。