<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          定了!VBE2021開源

          共 7171字,需瀏覽 15分鐘

           ·

          2021-09-19 16:08

          一、序言

          VBE2021為開源工程,使用者可在源工程代碼基礎(chǔ)上,修改、完善、擴(kuò)展。

          有參與完善的作者,插件最終發(fā)布會(huì)以作者名單形式列出。參與者可申請(qǐng)權(quán)限,修改本文檔。


          開源文件及QQ群228441848。


          若要借鑒代碼做自己的VBE插件,需備注以下文字。技術(shù)支持:燈  ,微信:285538335



          二、工程文件說(shuō)明


           整體思路及調(diào)試

          新建dll動(dòng)態(tài)鏈接庫(kù)工程,利用IDTExtensibility2接口,實(shí)現(xiàn)對(duì)VBE的二次開發(fā)。


          打開工程調(diào)試,需要注冊(cè)dll(詳見本文檔2.4.1內(nèi)容),并且啟用外部Excel或者其他程序。

                         






          2.1 窗體部分

          2.1.1 CodeFrom.vb

                         

          主要功能:

          • 展示自定義代碼庫(kù)路徑下的代碼庫(kù)文件。代碼庫(kù)以txt形式存儲(chǔ),窗體加載過(guò)程,自動(dòng)讀入TreeView控件。

          • 用戶可在窗體上操作TreeView控件,來(lái)修改、擴(kuò)充自己的代碼庫(kù)。

          • 可直接將代碼插入到當(dāng)前的VBE代碼編輯界面。


          2.1.2 CodeList.vb

          窗體對(duì)應(yīng)于:智能提示功能

                         

          主要功能:

          • 用戶輸入空格之后,利用鍵盤鉤子,調(diào)取CodeList窗體。窗體加載過(guò)程中,對(duì)用戶當(dāng)前行的數(shù)據(jù)進(jìn)行模糊查詢,滿足條件的寫入ListBox。

          • 左側(cè)是Listbox,右側(cè)是RichTextBox控件,用來(lái)展示詳細(xì)內(nèi)容。

          • CodeList窗體讀取的代碼來(lái)自于,安裝路徑下的CodeList.xlsx。


          bug需解決:

          • 窗體彈出之后,按方向鍵無(wú)法實(shí)現(xiàn),listbox的上下選取。只能光標(biāo)滑動(dòng)選取。

          • 無(wú)法利用快捷鍵實(shí)現(xiàn)開關(guān)智能提示功能




          2.1.3 IniForm.vb

          主要功能:

          • 展示配置信息選項(xiàng),配置信息存儲(chǔ)在代碼安裝路徑下的配置.ini。


          2.1.4 author.vb

          主要功能:

          • 展示作者信息,后續(xù)參與者的信息也會(huì)再此展示。


          2.1.5 UpdateForm.vb

          主要功能:

          • 展示qq群信息,目前只能實(shí)現(xiàn)手動(dòng)去qq群下載軟件,后期想實(shí)現(xiàn)在線下載更新。




          2.2 模塊部分

          2.2.1 Varaint.vb

          存儲(chǔ)各類變量、常量、API函數(shù)


          2.2.2 IndentCode.vb和RebuildModuleCode.vb

          代碼美化縮進(jìn)的核心代碼。


          2.2.3 Connect.vb

          利用IDTExtensibility2接口,實(shí)現(xiàn)VBE菜單的加載。頂部菜單、按鈕、右鍵菜單等等代碼均在此。

          接口的實(shí)現(xiàn)方式以及菜單的添加,參考網(wǎng)址:

          https://www.mztools.com/articles/2012/MZ2012013.aspx

          https://www.mztools.com/articles/2012/MZ2012015.aspx



          其中,_myToolBarButton_Click點(diǎn)擊事件是所有的點(diǎn)擊觸發(fā)的事件。






          2.3 添加引用部分

                         



          2.3.1 Ude

          識(shí)別txt編碼形式,解決讀取txt內(nèi)容亂碼問(wèn)題。


          2.3.2 VBE相關(guān)

          引用VBE相關(guān)類庫(kù),實(shí)現(xiàn)VBE對(duì)象的操作。



          2.4 打包注冊(cè)部分

          實(shí)現(xiàn)插件的加載有2步:①注冊(cè)dll;②導(dǎo)入VBE加載項(xiàng)的注冊(cè)表。

          注冊(cè)dll是利用RegAsm.exe去注冊(cè)。




          2.4.1 手動(dòng)注冊(cè)方式

          如果是手動(dòng)加載和卸載插件,需要手動(dòng)運(yùn)行下面的文件,并且是管理員身份運(yùn)行。


          兩個(gè)文件:RegAsm.bat和RegAddIn.reg


          RegAsm.bat


          @ECHO OFFset dll="VBE2021.dll"%SystemRoot%"\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /codebase %~dp0\%dll%%SystemRoot%"\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" /codebase %~dp0\%dll%exit




          RegAddIn.reg


          Windows Registry Editor Version 5.00
          [HKEY_CURRENT_USER\Software\Microsoft\VBA\VBE\6.0\Addins\VBE2021.Connect]"FriendlyName"="VBE2021""Description"="VBE2021""LoadBehavior"=dword:00000003"CommandLineSafe"=dword:00000000
          [HKEY_CURRENT_USER\Software\Microsoft\VBA\VBE\6.0\Addins64\VBE2021.Connect]"FriendlyName"="VBE2021""Description"="VBE2021""LoadBehavior"=dword:00000003"CommandLineSafe"=dword:00000000



          2.4.2 手動(dòng)卸載方式

          兩個(gè)文件:RegAsm.bat和RegAddIn.reg


          UnRegAsm.bat


          @ECHO OFFset dll="VBE2021.dll"%SystemRoot%"\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /codebase %~dp0\%dll% /u%SystemRoot%"\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe" /codebase %~dp0\%dll% /uPAUSECLS





          RegAddIn.reg


          Windows Registry Editor Version 5.00
          [-HKEY_CURRENT_USER\Software\Microsoft\VBA\VBE\6.0\Addins\VBE2021.Connect]
          [-HKEY_CURRENT_USER\Software\Microsoft\VBA\VBE\6.0\Addins64\VBE2021.Connect]





          2.4.3 Innosetup打包直接注冊(cè)和卸載

          innosetup可實(shí)現(xiàn)注冊(cè)表的寫入和dll的直接注冊(cè)。

          源代碼如下:


          #define MyAppName "VBE2021"#define MyAppVerName "VBE2021"
          [Setup]AppName={#MyAppName}AppVerName={#MyAppVerName}//版本號(hào)AppVersion=1.3VersionInfoProductName=VBE2021DefaultDirName= "d:\VBE2021"//禁止用戶選擇安裝路徑DisableDirPage=noDisableProgramGroupPage=yesDefaultGroupName=VBE2021OutputDir=.SetupIconFile=B.icoOutputBaseFilename=VBE2021WindowShowCaption=noDisableWelcomePage=no//PrivilegesRequired=admin ArchitecturesInstallIn64BitMode = x64 ia64 //控制面板卸載界面圖標(biāo)UninstallDisplayIcon= {app}\B.ico
          //發(fā)布者名稱 AppPublisher=作者:燈[code]procedure InitializeWizard();begin WizardForm.LICENSEACCEPTEDRADIO.Checked:=true;end;

          [Messages]SetupWindowTitle=VBE2021 安裝向?qū)?/span>ClickNext=為確保本軟件能一次安裝成功,請(qǐng)盡可能先關(guān)閉360或者電腦管家、金山毒霸之類,然后再安裝本軟件。%n%n%n%n請(qǐng)確保安裝路徑不能有空格??!%n%n請(qǐng)確保安裝路徑不能有空格?。?n%n請(qǐng)確保安裝路徑不能有空格?。?/span>
          [Languages]Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
          [Icons]Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
          [Files]Source: "C:\Users\WangYa\Desktop\VBE2021\VBE2021\bin\Debug\Code\*.*"; DestDir: "{app}\Code"; Flags: recursesubdirsSource: "C:\Users\WangYa\Desktop\VBE2021\VBE2021\bin\Debug\Data\*.*"; DestDir: "{app}\Data"; Flags: recursesubdirsSource: "C:\Users\WangYa\Desktop\VBE2021\VBE2021\bin\Debug\VBE2021.dll"; DestDir: "{app}"; Flags: ignoreversionSource: "C:\Users\WangYa\Desktop\VBE2021\VBE2021\bin\Debug\B.ico"; DestDir: "{app}"; Flags: ignoreversionSource: "C:\Users\WangYa\Desktop\VBE2021\VBE2021\bin\Debug\Ude.dll"; DestDir: "{app}"; Flags: ignoreversionSource: "C:\Users\WangYa\Desktop\VBE2021\VBE2021\bin\Debug\RegAsm.bat"; DestDir: "{app}"; Flags: ignoreversion

          [Registry] Root: HKCU; Subkey: "Software\Microsoft\VBA\VBE\6.0\Addins\VBE2021.Connect"; ValueType: string; ValueName: "FriendlyName"; ValueData: "VBE2021" Root: HKCU; Subkey: "Software\Microsoft\VBA\VBE\6.0\Addins\VBE2021.Connect"; ValueType: string; ValueName: "Description"; ValueData: "VBE2021" Root: HKCU; Subkey: "Software\Microsoft\VBA\VBE\6.0\Addins\VBE2021.Connect"; ValueType: dword; ValueName: "LoadBehavior"; ValueData: 3Root: HKCU; Subkey: "Software\Microsoft\VBA\VBE\6.0\Addins64\VBE2021.Connect"; ValueType: string; ValueName: "FriendlyName"; ValueData: "VBE2021" Root: HKCU; Subkey: "Software\Microsoft\VBA\VBE\6.0\Addins64\VBE2021.Connect"; ValueType: string; ValueName: "Description"; ValueData: "VBE2021" Root: HKCU; Subkey: "Software\Microsoft\VBA\VBE\6.0\Addins64\VBE2021.Connect"; ValueType: dword; ValueName: "LoadBehavior"; ValueData: 3[Code] //此代碼的功能:在出現(xiàn)安裝界面之前彈出一個(gè)提示框,告之用戶一些必要的信息function InitializeSetup(): Boolean;begin Log('InitializeSetup called'); Result := true
          end;
          //此代碼的功能:卸載插件時(shí)清除注冊(cè)表痕跡procedure CurUninstallStepChanged (CurUninstallStep: TUninstallStep );beginRegDeleteKeyIncludingSubkeys(HKEY_CURRENT_USER, 'Software\Microsoft\VBA\VBE\6.0\Addins\VBE2021.Connect');RegDeleteKeyIncludingSubkeys(HKEY_CURRENT_USER, 'Software\Microsoft\VBA\VBE\6.0\Addins64\VBE2021.Connect');

          end;[RUN] //Filename: "{dotnet40}\RegAsm.exe"; Parameters: /codebase VBE2021.dll; WorkingDir: {app}; StatusMsg: "正在注冊(cè)..."; Flags: skipifsilent shellexec runminimized waituntilterminated //Filename: {app}\RegAsm.bat; Description: "BAT"; Flags: skipifsilent shellexec runhidden nowait postinstallFilename: "{app}\RegAsm.bat"; WorkingDir: "{app}\"; StatusMsg: "正在安裝注冊(cè)組件..."; Parameters: {app}; Flags: skipifsilent shellexec runminimized waituntilterminated



          但是dll的直接注冊(cè)我一直沒成功,所以目前打包的時(shí)候把RegAsm.bat也打包進(jìn)去了,安裝插件的時(shí)候,直接運(yùn)行RegAsm.bat實(shí)現(xiàn)間接注冊(cè)。




          三、插件使用說(shuō)明

          3.1 安裝


                         


                         


                         



                         




          3.2 代碼輔助錄入

          3.1.1 菜單錄入代碼

                         



          3.1.2智能提示錄入代碼

          輸入完部分關(guān)鍵字,按空格鍵。即可彈出智能提示。

          智能提示可在配置中進(jìn)行關(guān)閉。

                         



                         



          3.3 代碼美化縮進(jìn)


                         



                         


          3.4 代碼庫(kù)存儲(chǔ)修改


                         



                         






          VBA微信交流群已經(jīng)到⑤群,需要交流VBA或者函數(shù)的朋友可掃碼,邀請(qǐng)你進(jìn)群。





          =  推薦閱讀  =


          Excel提取Word | Word VBA教程,來(lái)了! | 拆分Excel | VBA代碼解釋器 | PDF快速轉(zhuǎn)Word用VSTO做插件,其實(shí)很簡(jiǎn)單

          瀏覽 111
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  5月婷婷6月丁香 | 色精品 | 台湾无码黄片 | 精品人妻中文字幕 | 深爱激情五月天网 |