前兩天去教務上幫忙,遇到了這樣一個任務:
樣表如下,敏感信息已刪除:
按照本表來看,點擊列印一張,就會把當前頁列印,點擊批量列印,則會把開始序號到結束序號之間的列印。
然鵝……
首先想到是宏被禁用的問題,看了一眼教務處的電腦,安裝的是WPS2019,也就是這玩意兒。
一般家庭用戶用的也是這個版本,然鵝這個版本是沒有宏功能的,WPS的宏在Pro版本中,你可以去我博客下載。
所以,問題來了,宏到底是個啥東西?
Office中的宏,是英文單詞Macro的譯名,微軟對宏的定義為:能組織到一起作為獨立的命令使用的一系列office命令,它能使日常工作變得更容易。
時至如今,宏已經變成了一類簡化操作處理的命令統稱,如滑鼠宏,鍵盤宏等,在遊戲等領域被廣泛應用。
微軟採用了Visual Basic for Application(VBA)作為Office中的宏的開發語言,VB本身是微軟的親兒子,VBA基於VB的語法進行書寫,一方面健全了自家的產品體系,另一方面,只需要簡單的VB基礎就可以快速入門VBA來完成對Office功能的增強。
實際上VB在南方地區甚至出現在了中學電腦教材中,所以VBA的發展也異常的順利,以至於WPS只能被迫跟風,使用VBA作為宏的開發語言,以便與市場份額不斷增大的MS進行拉鋸戰。
在前段時間的WPS發布會上,有兩個消息讓我比較關注。
一是WPS的Linux版本預計劃將開放插件接口,這讓WPS for Linux版本可以通過插件擴展功能,之前的Linux上的Office產品中,僅有永中Office提供了Java版本的接口。
二是本次第三方擴展接口的開發語言,疑似為python或者JavaScript。如果這個方案能實現的話,大膽的猜測一下未來PC版本的WPS也可能會開放PY或JS的開發接口?這樣不用VBA也能實現批量處理的功能了,而且更強大。
好了繞遠了,繞回來再看。
剛說到WPS沒有宏了,所以我果斷從教務拷貝了原表回我電腦,然後發現依舊是這個提示。
檢查了下我電腦上是啟用了宏的。
換WPS看看,我是Pro版本的,自帶宏功能。
然鵝也執行不了這個列印的宏。
然後檢查宏,然後……
陷入自閉,這個文檔莫得宏……
這是一個莫得靈魂的文檔。
空空如也,啥宏都沒有。
因為在實際中學校的學生蠻多的,所以要自己一個一個列印會很費力,所以想著怎麼把這個宏修復下。
問題是我不會VB,更不會VBA……
所以得想想有沒有其他方法。
首先考慮了現有的插件的功能:
KuTools for Excel的批量列印嚮導,如圖:
好吧,這個功能看起來是用來列印多個Excel文件的。
Excel易用寶的高級列印功能:
方方格子的填寫模板功能:
瞄了半天都不知道這個怎麼用。
開始揪頭髮。
開始大暴走。
開始找錘子。
-
好吧我開玩笑的,折騰了十幾分鐘後我放棄了用插件解決這個問題的打算,開始嘗試用宏本身來解決。
首先觀察這一張表,我們要列印的是一個名為「學生基本情況登記表(列印版正面)」的工作簿:
這個工作簿長這個樣子,左側是表的模板,右側是列印控制,當點擊方向箭頭時,表中的數據會隨著變動,數據來源來自於學生信息統計這一個工作簿,如下所示。
接下來研究為什麼點擊箭頭後數據會變動。
猜測有兩種可能:
一是箭頭由宏進行操作,點擊箭頭後執行了對應的宏功能。
二是Excel自帶的能力。
一不大可能,因為這張表上的所有宏都被神秘失蹤了。
但還是要檢查一下,右鍵->指定宏:
可以看到是一個單純的微調框,沒有相關的宏。
右鍵->設置控制項格式:
單元格連結這裡出現了$P$5,也就是說這個控制項被綁定到了P列5行這個單元格。
當前值為1,也就是當前P5這個單元格的值為1,步長是指每次點擊箭頭會增加的長度為1,比如步長5代表著點擊一次會增加或者減少5。
微調框就是這樣,看起來是和左側數據變動沒什麼聯繫的。
想了一下,找一個數據會變動的單元格看看:
學籍號我編的,說一個常識問題:
一般學籍號是由L/G/J開頭,以身份證號作為編號的一組號碼,L表示臨時學號,G/J表示的是正式學籍,但J開頭的學號編碼不是按身份證號編的,而是按6位學校所在地區劃碼+8位出生日期+3位順序碼+1位校驗碼。
回頭,看這個公式,他就是數據變動的原因:
=VLOOKUP($P$5,'學生信息統計表(教師輸入版)'!A1:AB8,2,0)
複習一下VLOOKUP函數:
作用:
搜索表區域首列滿足條件的元素,確定待檢索單元格在區域中的行序號,再進一步返回選定單元格的值。默認情況下,表是以升序排列的。
用法:
= VLOOKUP (你想要查找的內容,要查找的位置,包含要返回的值的區域中的列號,返回近似或精確匹配-表示為 1/TRUE 或 0/假)
在上述公式中,變動的數據通過VLOOKUP函數,查找P5中的值,也就是另一個工作簿中的編號,然後返回了對應的行的內容,從而實現了數據的動態變化。
以上為對樣表的功能實現的分析,下一篇內容交代我是怎麼解決這個問題的。
案例所涉樣表下載(已做脫敏處理):
回復關鍵詞:1015 即可獲得。
關注我們
@大學生的電腦課
有想了解的知識請留言