Visual BASIC for Application (VBA,搭配應用程式使用)
前言
據 MSDN 網站指出, VSA (Visual Studio for Application) 即將取代 VBA ,目前已進行到 Beta 2 版之測試,未來在 Office 系列中,就不在只是 VB 語法的天下了 (詳情)
在 VBA 的工具列預設是不提供在 VB 中的 Common Dialog ,想要簡單的用共用對話盒其實只要把本模組引入即可,不限定是 Excel、Word 或是其它支援 VBA 的程式皆可使用,當然, VB 亦可使用,不過因為 VBA 有些許語法並不支援 VB ,因此有空我還會把 VB 專用的 Code 放進 VB 部分的網頁,而且本來這段程式碼就是先為 VB 寫的, VBA 只是順便享用這個成果
開啟舊檔對話盒:myGetOpenFileName,傳回值為檔名,放棄則傳回空字串
引數:
- hTitle:對話盒標題
- hFilter:檔案類型,可省略,同 VB 的 Common Dialog,例如:"所有檔案 (*.*)|*.*|純文字檔 (*.TXT)|*.TXT"
- DefaultDir:預設開啟目錄,可省略
- DefaultFileName:預設開啟檔案檔名,可省略
- wFlags:旗標,可省略,同 VB 的 Common Dialog
- hWnd:視窗代號,可省略
另存新檔對話盒:myGetSaveFileName,傳回值為檔名,放棄則傳回空字串
引數:
- hTitle:對話盒標題
- hFilter:檔案類型,可省略,同 VB 的 Common Dialog,例如:"所有檔案 (*.*)|*.*|純文字檔 (*.TXT)|*.TXT"
- DefaultDir:預設存檔目錄,可省略
- DefaultFileName:預設存檔檔案檔名,可省略
- wFlags:旗標,可省略,預設詢問是否覆寫,同 VB 的 Common Dialog
- hWnd:視窗代號,可省略
以在 Excel 中的使用範例:
Range("a1") = myGetOpenFileName("開啟舊檔")
Range("a2") = myGetSaveFileName("另存新檔")在本範例中,使用到其它函數說明請參閱相關網頁, myHWnd 、 FindWindowTitle 請參閱 VB 網頁中的視窗工具模組, myReplaceString 未來將會整理進 VB 網頁中的字串工具模組
MS Office 自動化巨集 (Excel & Word)
傳回列名:RangeColumnName(hColumn As Long)
Microsoft Excel 在應用上時常要用到列名當引數,但列名為 A ~ Z、AA ~ IV ,對於使用數值時十分不便因此配合寫一個短小函數專司傳回列名之工作,使用方法說明如下:
範例
範例 傳回值 說明 RangeColumnName(1) A 第 1 列名為 A RangeColumnName(27) AA 自第 27 列起,列名為兩位英文字母 RangeColumnName(256) IV 最大列名到第 256 列 RangeColumnName(0) 小於 0 為無效引數,傳回空字串 RangeColumnName(257) 大於 257 為無效引數,傳回空字串
利用 Excel 抓取目錄及檔名:利用 Excel VBA 來取的某一目錄下子目錄及檔案列表
待續