office Vba用第三方編輯器,如Sublime或Atom

office VBA的ide實在是太爛了,代碼提示和語法高亮功能都不行,但是由于MS沒有開放這個接口,不能用如sublime或Atom這樣優(yōu)秀的第三方編輯器?
經(jīng)過一番研究,利用vba的導(dǎo)入導(dǎo)出模塊的功能 ,部分實現(xiàn)了這個功能:

  1. 新建一個xlsm文件
  2. alt+F11打開vbe環(huán)境,選中左邊的ThisWorkbook,在代碼面板輸入下面的代碼
Public Sub exportAndImport()
        Dim wkBook As Excel.Workbook
        Dim wkComp As VBIDE.VBComponent
        Dim macroPath As String
        Set wkBook = ThisWorkbook
        
        On Error Resume Next
        macroPath = ThisWorkbook.Path & "\" & "export\"
        For Each wkComp In wkBook.VBProject.VBComponents 'export
            If wkComp.Type = vbext_ct_StdModule Then '如果是模塊就導(dǎo)出并刪除
                wkComp.Export macroPath & wkComp.Name & ".bas"
                wkBook.VBProject.VBComponents.Remove wkComp
            End If
        Next
        macroPath = ThisWorkbook.Path & "\" & "import\"
        tempfile = Dir(macroPath & "*.bas")
        
        While tempfile <> ""
            Set wkComp = wkBook.VBProject.VBComponents.import(macroPath & tempfile) '導(dǎo)入代碼
            wkComp.Name = Left(tempfile, Len(tempfile) - 4)
            tempfile = Dir
        Wend
        Debug.Print "in export and import"
    End Sub
  1. 解釋下,這就是把當前工作薄里的所有模塊導(dǎo)出到當前子目錄export,并從當前子目錄import里,導(dǎo)入各個bas文件為對應(yīng)文件名的模塊。比如我的一個main.bas文件里的代碼會導(dǎo)入成main模塊。這樣,就可以用 sublime或者 atom等ide來編輯。
    main模塊
  2. 兩個問題
  • 問題1:眾所周之,在VBA中,模塊是導(dǎo)出成.bas文件,類模塊是導(dǎo)出成.cls文件,但是我發(fā)現(xiàn).VBProject.VBComponents.import 不能指定導(dǎo)入類型,只要是允許導(dǎo)入的文件,都導(dǎo)入成VBA的模塊。更不用提窗體的frm文件。
  • 問題2:為了方便,我在工作表里扔了兩個Button,一個Button宏是上述的函數(shù),一個Button宏是運行 main里的一個main()函數(shù)
    但是我發(fā)現(xiàn),只要把這兩個宏的功能集中的一個宏里,就會出問題,類似下面這樣
call exportAndImport()
call main.main()

感覺是exportAndImport,會多導(dǎo)入一個bas文件,結(jié)果會導(dǎo)致函數(shù)定義重復(fù),有誰幫我解釋一下嗎?


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

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

  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持,譯者再次奉上一點點福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠,并抽取幸運大...
    HetfieldJoe閱讀 3,724評論 2 27
  • 1.1 VBA是什么 直到90年代早期,使應(yīng)用程序自動化還是充滿挑戰(zhàn)性的領(lǐng)域.對每個需要自動化的應(yīng)用程序,人們不得...
    浮浮塵塵閱讀 22,141評論 6 49
  • { "Unterminated string literal.": "未終止的字符串文本。", "Identifi...
    一粒沙隨風(fēng)飄搖閱讀 11,321評論 0 3
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評論 19 139
  • 《方法總比問題多》 01.遇到問題時,不退縮,不找借口,不推卸責(zé)任,從自己身上找原因,積極尋找解決方法,你會發(fā)現(xiàn)沒...
    環(huán)盈閱讀 425評論 0 0

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