程前 吳純福
摘 要:基于ExcelVBA實現(xiàn)的專題地圖創(chuàng)建模型,在VBA編程環(huán)境下,通過對google地球的二次開發(fā),實現(xiàn)了測試log大批量、高效率、智能化創(chuàng)建專題地圖。
關(guān)鍵詞:excel;VBA;專題地圖;log;電平值;步長
0 引言
通信信號測試軟件層出不窮,各種測試軟件導(dǎo)出的信號測試log一般都只能轉(zhuǎn)換成mapinfo格式,然后通過mapinfo創(chuàng)建專題地圖來展示在google地球上。如何快速處理多個excel文件,并創(chuàng)建google專題地圖,本文通過研究基于ExcelVBA的方法實現(xiàn)批量專題地圖創(chuàng)建,從而提高工作效率。
1 專題地圖創(chuàng)建模型功能
基于ExcelVBA實現(xiàn)的專題地圖創(chuàng)建模型(以下簡稱“模型”)主要解決大量測試log快速處理為google地球?qū)n}地圖文件,其主要功能如下:
(1)自定義的測試信號電平值區(qū)間和顯示顏色。
(2)測試log快速轉(zhuǎn)換為google專題地圖。
(3)多個測試log只需一鍵處理。
2 專題地圖創(chuàng)建模型介紹
2.1 測試log存放要求
“網(wǎng)優(yōu)先鋒”軟件測試log為excel文件,將導(dǎo)出的文件存放在指定目錄下,本文以“D:\11”為例。模型在使用時會自動檢索指定目錄下所有excel文件,根據(jù)工具格式自動調(diào)整輸入內(nèi)容,并逐一進(jìn)行處理。實現(xiàn)該功能代碼如下:
PublicFunctionHH()
WithThisWorkbook.Sheets(2)
.Range(“A2:B1000”).ClearContents
DimstartfolderAsString
startfolder=”D:\11\”指定文件夾
Setfolderlist=CreateObject(“scripting.dictionary”)
Setfilelist=CreateObject(“scripting.dictionary”)
i=2
folderlist.Addstartfolder,””
DoWhilefolderlist.Count>0
ForEachFolderNameInfolderlist.keys
fname=Dir(FolderName,vbDirectory)
DoWhilefname<>””
Iffname<>”..”Andfname<>”.”Then
IfGetAttr(FolderName&fname)AndvbDirectoryThen
folderlist.AddFolderName&fname&”\”,””
Else
filelist.AddFolderName&fname,””
EndIf
EndIf
fname=Dir
Loop
folderlist.Remove(FolderName)
Next
Loop
ForEacharrInfilelist.keys
.Range(“A”&i).Value=arr
.Range(“B”&i).Value=Mid(arr,InStrRev(arr,”\”)+1)
i=i+1
Next
EndWith
EndFunction
2.2 模型原理介紹
首先,設(shè)定步長和比例,一般步長設(shè)置為0.5米,比例設(shè)置為0.3。
其次,設(shè)置不同信號電平值區(qū)間及相應(yīng)的顏色,從綠色到紅色信號強(qiáng)度依次減弱。
最后,設(shè)置相應(yīng)的“經(jīng)度”、“緯度”和“電平值”所對應(yīng)的列,并進(jìn)行處理和轉(zhuǎn)換。主要代碼如下:
PublicFunctioncreatkmlfromexcell()
‘yueminjun
Dimh,st,x,y,zAsDouble
Dimstr,tmptAsString
DimDAT()AsByte,DAT1()AsByte
DimfilenameAsString
h=0.5
st=0.3
CC1=”FF00FF00”
CC2=”FFFF0000”
CC3=”FF00FFFF”
CC4=”FFFF00FF”
CC5=”FF0000FF”
r=Cells(65535,1).End(xlUp).row
jingdu=2
weidu=3
dingzhilie=4
SelectCasez
CaseVal(-70)ToVal(-20)
CaseVal(-80)ToVal(-70)
CaseVal(-90)ToVal(-80)
CaseVal(-100)ToVal(-90)
CaseVal(-150)ToVal(-100)重復(fù)代碼
CaseElse
EndSelect
EndIf
Next
tmpt=”