程前 吳純福
摘 要:基于ExcelVBA實(shí)現(xiàn)的專(zhuān)題地圖創(chuàng)建模型,在VBA編程環(huán)境下,通過(guò)對(duì)google地球的二次開(kāi)發(fā),實(shí)現(xiàn)了測(cè)試log大批量、高效率、智能化創(chuàng)建專(zhuān)題地圖。
關(guān)鍵詞:excel;VBA;專(zhuān)題地圖;log;電平值;步長(zhǎng)
0 引言
通信信號(hào)測(cè)試軟件層出不窮,各種測(cè)試軟件導(dǎo)出的信號(hào)測(cè)試log一般都只能轉(zhuǎn)換成mapinfo格式,然后通過(guò)mapinfo創(chuàng)建專(zhuān)題地圖來(lái)展示在google地球上。如何快速處理多個(gè)excel文件,并創(chuàng)建google專(zhuān)題地圖,本文通過(guò)研究基于ExcelVBA的方法實(shí)現(xiàn)批量專(zhuān)題地圖創(chuàng)建,從而提高工作效率。
1 專(zhuān)題地圖創(chuàng)建模型功能
基于ExcelVBA實(shí)現(xiàn)的專(zhuān)題地圖創(chuàng)建模型(以下簡(jiǎn)稱(chēng)“模型”)主要解決大量測(cè)試log快速處理為google地球?qū)n}地圖文件,其主要功能如下:
(1)自定義的測(cè)試信號(hào)電平值區(qū)間和顯示顏色。
(2)測(cè)試log快速轉(zhuǎn)換為google專(zhuān)題地圖。
(3)多個(gè)測(cè)試log只需一鍵處理。
2 專(zhuān)題地圖創(chuàng)建模型介紹
2.1 測(cè)試log存放要求
“網(wǎng)優(yōu)先鋒”軟件測(cè)試log為excel文件,將導(dǎo)出的文件存放在指定目錄下,本文以“D:\11”為例。模型在使用時(shí)會(huì)自動(dòng)檢索指定目錄下所有excel文件,根據(jù)工具格式自動(dòng)調(diào)整輸入內(nèi)容,并逐一進(jìn)行處理。實(shí)現(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è)定步長(zhǎng)和比例,一般步長(zhǎng)設(shè)置為0.5米,比例設(shè)置為0.3。
其次,設(shè)置不同信號(hào)電平值區(qū)間及相應(yīng)的顏色,從綠色到紅色信號(hào)強(qiáng)度依次減弱。
最后,設(shè)置相應(yīng)的“經(jīng)度”、“緯度”和“電平值”所對(duì)應(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=”