最近在自己写的KML综合工具箱插件上开发一个基站扇区为箭头的功能,需要把相关的经纬度信息和扇区箭头经纬度,还有一些KML的标记写入txt文本,生成kml文件,代码结构如下:
Sub WriteData() n = FreeFile Sheet2.Activate arr = Sheet2.UsedRange '是否是第一次写入Folder信息,以便决定是否写入收尾信息 Dim FirstOrNot As Boolean FirstOrNot = True TepmaryBox = "" Open "C:甥敳獲AdministratorDesktop3.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:甥敳獲AdministratorDesktop3.kml" For Append As #n Call writeKmlInitial '写入初始信息 For i = 2 To UBound(arr) '中间的处理程序省略,写入的数据在这里完成。 Next Close #n End Sub