劉旭光 劉皓媛
1.安徽交通職業(yè)技術(shù)學(xué)院 城市軌道交通與信息工程系;2.安徽師范大學(xué)計算機與信息學(xué)院
Office是目前應(yīng)用最為廣泛的辦公處理軟件之一,它具有強大的文檔業(yè)務(wù)處理能力。在Office中使用VBA編程進行二次開發(fā),能實現(xiàn)文檔扭轉(zhuǎn)的自動化。利用VBA對Office中的文檔內(nèi)容進行轉(zhuǎn)換與提取再通過Email發(fā)送給同事。本文以日常工作中涉及的文檔為例,展示Office中VBA批量提取數(shù)據(jù)的強大功能及多郵件一次性發(fā)送功能,將用戶從簡單而重復(fù)的數(shù)據(jù)處理工作中解脫出來,提高辦公效率及信息無差錯傳遞。
日常工作中,我們經(jīng)常編輯文件進行任務(wù)安排,比如學(xué)校里每一學(xué)期都有若干次考試安排,需要編排考務(wù)信息等,當考務(wù)文檔編輯完成后要通過QQ、微信或者電話一個一個通知到教師,告訴他的監(jiān)考任務(wù);在編輯某個Excel數(shù)據(jù)表后我們想將表格內(nèi)容傳給某些同事預(yù)覽但不希望文檔內(nèi)容被改動;再比如我們設(shè)計好一個PPT演示文檔后,需要將其分發(fā)給我們工作中的每個成員,等這些都要進行比較繁瑣的電子文件傳遞分發(fā)工作,而由于分發(fā)到的工作伙伴不確定性,很難保證我們在數(shù)據(jù)文檔的傳遞分發(fā)過程中不會遺漏傳給某個人。而遺漏信息的分發(fā)將給我們的工作帶來不可預(yù)見的損失。
因此,一套功能完備的信息推送軟件對實際工作的意義特別重大,它可以準確無誤地將數(shù)據(jù)推送給預(yù)先定義好的同事。在VBA的強大功能基礎(chǔ)上,我們想利用VBA核心功能設(shè)計一套信息推送軟件滿足我們的日常文檔扭轉(zhuǎn)需要[1]。
基于VBA的智能推送系統(tǒng)設(shè)計目的就是在用戶結(jié)束文檔編輯后,利用交互方式自動將文檔的內(nèi)容截取或者整體發(fā)送給特定的工作伙伴,供工作伙伴借鑒或者將有關(guān)事宜通知到工作伙伴。在圖1中清晰地描述了系統(tǒng)結(jié)構(gòu)。
圖1 工程結(jié)構(gòu)圖Fig.1 Engineering structure
該軟件的重點在于各類文檔信息編輯完成后,編輯人員確定是否啟用VBA,如果啟用VBA則調(diào)用底層的接口向自己的設(shè)定好的工作伙伴發(fā)送EMAIL或者QQ、短信等消息,本系統(tǒng)采用發(fā)送Email方式傳遞信息。系統(tǒng)的程序流程圖如圖2所示。
圖2 軟件流程圖Fig.2 Software flow chart
因為需要在Office的文檔編輯程序中調(diào)用VBA,而且根據(jù)不同的應(yīng)用調(diào)用不同的VBA,但是在其他的正常文檔編輯時,我們不需要啟用這些VBA,所以需要設(shè)計一個啟動Word、Excel與Powerpoint等的管理功能的程序,以確保它們使用不同的文檔模板。在這個程序中有著啟動Office軟件的功能,同時還要有VBA加載及工作伙伴信息界定的功能,將其界面效果設(shè)計成類似QQ界面,當鼠標進入管理界面后,管理界面正常顯示,鼠標離開窗體時,管理界面靠屏幕右邊半隱藏顯示,一旦單擊了管理界面的最小化按鈕則窗體隱藏在屏幕的系統(tǒng)盤托中[2]。它的核心代碼如下:
軟件所啟動的文檔編輯軟件有Word、Excel與Power-Point等,在啟動這些軟件時要同時加載應(yīng)用中的VBA模塊[3]。
打開啟用宏模板的Word程序?qū)ξ臋n進行編輯操作,編輯完成后由宏將剛保存的Word文檔轉(zhuǎn)換為PDF文件,轉(zhuǎn)換為PDF后再由Word宏啟動Email信息發(fā)送,把當前文檔的PDF作為附件發(fā)送到工作伙伴的Email信箱中[4]。
那么在控制管理模塊中啟動Word程序如下:
在上述代碼中的最后一行調(diào)用Email發(fā)送事件,向工作伙伴發(fā)送Email,并將當前文檔的PDF作為附件發(fā)送給工作伙伴,其實現(xiàn)語句如下:
bo = sendqqmail.QQ_email(qqid, Title, body,attachment)
在圖3的界面中,如果用戶單擊“是”按鈕,則向選定的工作人員發(fā)送EMAIL。
圖3 Word文檔退出時的對話框Fig.3 Dialog box when Word document exits
其他的Excel與PowerPoint文檔編輯與發(fā)送信息如同Word文檔一樣操作[6]。
由于本軟件項目使用的發(fā)送Email場合非常多,我們在設(shè)計時將它作為DLL動態(tài)鏈接庫進行開發(fā),發(fā)送Email代碼如下:
(4)編譯SendQQClass這個Project。會在 SendQQClassinDebug下面生成3個文件。SendQQClass.dll,SendQQClass.pdb,SendQQClass.tlb。其中SendQQ Class.tlb就是我們要在VBA中引用的,通過它就可以引用SendQQClass.dll。
這樣配置與編譯后在低版本的軟件中就可以調(diào)用SendQQClass.tlb文件進行Email發(fā)送了[8]。
有了這些技術(shù)知識準備后,就解決了系統(tǒng)開發(fā)的技術(shù)難點。在系統(tǒng)開發(fā)過程中選擇靈活的架構(gòu)、技術(shù)和設(shè)計方法。另外開發(fā)完成后即進入試運行階段,要不斷探索如何提高研發(fā)的效率與用戶的滿意度從而進行軟件的改善。
在使用這套系統(tǒng)后,我們可以方便地將自己的工作文檔進行創(chuàng)建、修改等編輯操作,在文檔編輯工作完成退出Word、Excel或者PowerPoint應(yīng)用程序時,系統(tǒng)會自動調(diào)用Access數(shù)據(jù)庫與VBA代碼判斷是否將剛進行編輯的文檔發(fā)送給工作伙伴,這樣作到了對工作任務(wù)、工作協(xié)同、工作通知等內(nèi)容盡快發(fā)送到工作伙伴的手中,做到了信息無遺漏的傳遞,使工作人員很有效快捷地開展工作。
引用
[1] 胡振,陳素彬,唐天國,等.基于Excel-VBA的基礎(chǔ)教育教學(xué)質(zhì)量綜合評價軟件設(shè)計[J].微型電腦應(yīng)用,2021,37(6):58-62.
[2] 周云飛,李芳,安政,等.基于C#與Matlab混合編程在瓦斯預(yù)測系統(tǒng)中的應(yīng)用[J].山西能源學(xué)院學(xué)報,2020,33(6):96-98+102.
[3] 李小遐.Excel VBA在辦公自動化中的應(yīng)用[J].電子測試,2014(22):105-106+95.
[4] 何振娟,王瑋,劉海,等.EXCEL中VBA及WORD郵件合并功能在批量處理報表中的應(yīng)用[J].電腦知識與技術(shù),2021,17(6):212-214.
[5] 屠海鋒,邢美園.基于Word+VBA的SCIE文獻引證報告批處理方法[J].現(xiàn)代計算機,2021(10):143-146+160.
[6] 何振娟,王瑋,劉海,等.EXCEL中VBA及WORD郵件合并功能在批量處理報表中的應(yīng)用[J].電腦知識與技術(shù),2021,17(6):212-214.
[7] 劉軍,齊志飛.DLL二次開發(fā)測繪程序的優(yōu)勢[J].城市勘測,2005(1):27-28+36.
[8] 張正,賈小林.面向NB-IOT智能設(shè)備動態(tài)鏈接庫的遠程技術(shù)研究及應(yīng)用[J].計算機應(yīng)用與軟件,2021,38(6):170-175.