王春華,于京波,何 瑩,王 飛,張璟宇
(北京市河湖流域管理事務(wù)中心 科技科,北京 102627)
北京市有流域面積10 km2及以上的河流共計425條,河流總長度6 413.72 km[1].北京屬于海河流域,分為永定河、潮白河、北運河、大清河和薊運河五大水系[2].425條河流中,大清河水系60條、永定河水系75條、北運河水系110條、潮白河水系138條、薊運河水系42條.北京市河湖流域管理事務(wù)中心(以下簡稱“流域中心”)承擔(dān)著北京市跨行政區(qū)流域上下游、左右岸重大涉水事務(wù)綜合監(jiān)管的事務(wù)性工作,河長制相關(guān)事務(wù)性工作,有關(guān)水利工程及相關(guān)設(shè)施運行監(jiān)管的事務(wù)性工作[3].由于監(jiān)管范圍大,巡查周期內(nèi)覆蓋點位多,為提高監(jiān)管水平,流域中心配備了集思寶的北斗手持GPS采集終端——集智通APP,在巡查過程中可以快速采集目標(biāo)點位的地理信息,并拍攝現(xiàn)場照片作為數(shù)據(jù)分析依據(jù).由于集智通APP的功能設(shè)計中沒有將點位現(xiàn)場拍攝的照片信息集成到Excel中,巡查結(jié)束后,還需要人工梳理登記對應(yīng)的照片,手動將照片信息錄入到Excel中,工作量大且容易出錯.本文利用Excel VBA 開發(fā)了根據(jù)Excel中相應(yīng)行中記錄的點位信息,自動查找該點位的所有照片信息,并在Excel相應(yīng)行的不同列中加入鏈接的程序,自動實現(xiàn)照片信息的提取、加入,并生成鏈接,節(jié)省了人工處理數(shù)據(jù)的時間,提高了巡查效率.
Excel 是一款電子表格制作和數(shù)據(jù)分析軟件,能通過運用各種函數(shù)和工具快速便捷地進(jìn)行批量文字與數(shù)據(jù)的處理,它集成的VBA(Visual Basic for Applications)語言可以對Excel進(jìn)行二次開發(fā),極大地拓展了Excel的功能,使它具有了程序改造、插件開發(fā)及多任務(wù)批量處理的功能[4].VBA 衍生于VB語言,主要應(yīng)用于微軟Office的各項組件之中,而尤其以Excel和Access應(yīng)用VBA 較多,它有著與VB幾乎相同的開發(fā)環(huán)境[5]和語法.
將所有現(xiàn)場拍攝的照片名稱添加到Excel的某一空白列中待用.表格中每一行的第一列即為點位名稱,運用VBA 中的函數(shù)提取出照片名稱中的點位名稱,即可知道每張照片應(yīng)加入到哪一行中.通過循環(huán)遍歷,得出一個點位對應(yīng)的照片張數(shù),再通過一遍循環(huán),將多張照片分不同的列插入到對應(yīng)的點位行中.
(1)統(tǒng)計Excel表格中一共有多少字段列,增加末尾臨時列,自動加入照片名稱,便于對照片信息進(jìn)行處理.
程序如下:
(2)搜索照片文件夾,將文件夾內(nèi)的所有照片按名稱登記到末尾列中.
(3)統(tǒng)計excel中登記的巡查點位數(shù).
(4)統(tǒng)計照片信息列中一共有多少張照片.
(5)利用雙層循環(huán)將照片按照點位名稱分別插入到相應(yīng)行中.如果一個點位拍攝有多張照片,則將多張照片信息分別放在不同的列中,并將照片信息設(shè)置成超級鏈接的形式,點擊后直接能看到照片.
(6)如果一個點位有多張照片,則將每張照片分別插入一列中.
(7)將照片信息變成超級鏈接的形式.
(8)刪除程序初始增加的末尾臨時列.
流域中心在2022年8月19日的例行監(jiān)督巡查過程中,檢查了14個點位的現(xiàn)場情況.在九鼎畫室小微水體處拍攝了3張現(xiàn)場照片,在前疃村1號坑處拍攝了3張照片,在月牙河處拍攝了2張照片,其他巡查點位處由于沒有發(fā)現(xiàn)問題,未拍攝照片.巡查設(shè)備導(dǎo)出的Excel中包含了點位的地理信息,截圖見圖1,設(shè)備導(dǎo)出的照片信息見圖2.
圖1 集智通導(dǎo)出的Excel中包含點位信息截圖
圖2 集智通APP導(dǎo)出的點位所拍攝的照片信息截圖
運行本文設(shè)計的程序,得到的結(jié)果見圖3.
圖3 程序運行應(yīng)用結(jié)果信息截圖
由圖3可知,現(xiàn)場拍攝的照片以超鏈接的形式插入到相應(yīng)的點位信息行內(nèi).有多張照片時,則被插入到不同的列內(nèi).查看有問題的點位現(xiàn)場情況時,只需要在Excel中點擊鏈接照片即可,不再需要去照片文件夾中進(jìn)行人工搜索.
在日常工作尤其是業(yè)務(wù)資料整理過程中,存在著大量機械性的重復(fù)工作,利用VBA 這一通用的自動化語言,基于Excel,可將多步驟的手工操作和大量重復(fù)性工作轉(zhuǎn)化為簡單的操作,既減少了工作量,提高了工作效率,又避免了手工操作可能產(chǎn)生的錯誤.