最近在自己寫的KML綜合工具箱插件上開發一個基站扇區為箭頭的功能,需要把相關的經緯度信息和扇區箭頭經緯度,還有一些KML的標記寫入txt文本,生成kml文件,代碼結構如下:
Sub WriteData() n = FreeFile Sheet2.Activate arr = Sheet2.UsedRange '是否是第一次寫入Folder信息,以便決定是否寫入收尾信息 Dim FirstOrNot As Boolean FirstOrNot = True TepmaryBox = "" Open "C:\Users\Administrator\Desktop\3.kml" For Append As #n Call writeKmlInitial '寫入初始信息 For i = 2 To UBound(arr) '中間的處理程序省略,寫入的數據在這裡完成。 Next End Sub 代碼邏輯其實很簡單,但是打開運行結果卻不是我預想的,剛開始我一直很納悶,我以為是代碼邏輯出現了問題,最後逐句調試後,發現不是邏輯問題,於是百度了一番,沒有找到相關的原因,正在對著代碼嘮叨「這是啥原因類,奇怪了」的時候,突然腦海中浮現了,是不是應該代碼寫完txt數據的時候,在代碼末尾把打開的txt給關閉掉。於是13行Next下面加了一句Close #n,再一次運行代碼,查看結果,正確。果然是因為沒有關閉txt文件造成數據丟失的現象。通過這次代碼調試,如果前期打開了txt,後期一定要把它關閉,打開,關閉是成對出現的。否則就會造成數據丟失的奇怪現象。
Sub WriteData() n = FreeFile Sheet2.Activate arr = Sheet2.UsedRange '是否是第一次寫入Folder信息,以便決定是否寫入收尾信息 Dim FirstOrNot As Boolean FirstOrNot = True TepmaryBox = "" Open "C:\Users\Administrator\Desktop\3.kml" For Append As #n Call writeKmlInitial '寫入初始信息 For i = 2 To UBound(arr) '中間的處理程序省略,寫入的數據在這裡完成。 Next Close #n End Sub