零基礎學Excel VBA-WE015【一鍵生成KML文件】

一、簡單演示

零基礎學Excel VBA-WE015【一鍵生成KML文件】

零基礎學Excel VBA-WE015【一鍵生成KML文件】

零基礎學Excel VBA-WE015【一鍵生成KML文件】

二、關鍵對象/方法的分析

FileSystemObject

FileSystemObject,俗稱 fso 對象,提供對計算機文件系統的訪問。像我們這種非專業的人員,是沒必要深究的,知道有這麼個用法,是怎麼用的就夠了。

接著,我們用到了 fso 的三個方法:

  • fileExists,看名字就可以知道,是判斷指定文件是否已經存在。
  • OpenTextFile,打開文件,注意參數 8 ,表示追加寫入內容到文件的尾部。
  • CreateTextFile,創建一個文件,參數 True 表示覆蓋同名文件。其實在我們已經通過 If 進行判斷,這個 True 是沒有意義的。

後面還有 writeline,這個其實是 TextStream 的方法,但我們可以不管它,知道這麼個用法就夠了。

三、執行思路及過程分析

【1】Savefile 函數是幹嘛的

其實非常簡單,就是創建或者打開一個文件,然後對這個文件進行追加寫入。

【2】看看最簡單的 KML 文件包括什麼內容

我們打開 Google Earth,隨便增加一個座標點,然後,將位置另存為。OK,我們丟在桌面。

接著,我們來到桌面,找到我們剛才存的 KML 文件,右鍵,打開方式,選擇其它方式,在其他程序這裡,有個箭頭,點開,選記事本。KML 文件,我們還是保留默認用 Google Earth 打開,所以,左下角 始終使用什麼的,去掉,然後確定。

零基礎學Excel VBA-WE015【一鍵生成KML文件】

【3】對著 KML 完成宏的錄入

我們回到宏這裡,看看 Getpoint() 這個子過程,這是我們創建座標點的 KML 文件的宏。

前面是一些定義,來到 cont 這行,發現了沒有?這裡的內容,其實跟我們剛剛創建的 KML 文件的內容,其實是一樣的。

就是說,每個 KML 文件,都是這樣的架構,像一些 回車符 Chr(10) 沒有關係,增加了,可以讓我們生成的 KML 文件更加易讀一些。

我們看一下 “未命名地標.kml”,它前面是,在宏裡面對應的是 kname,前面是,我試過,都能用,目前找到的區別僅僅是文件夾的圖標上。kml 所用的語言,應該是 JavaScript,沒有研究,只能湊合隨便試試。

接著又是一大段內容,有些什麼 pin.png 的,其實是關於座標點圖標樣式的設置的,就是那個大頭針的樣子、大小什麼的。

有興趣的,多弄幾個不同的座標,然後保存起來看看,對比一下。

我們來到“未命名地標”,這裡開始對座標點進行定義了。

我們宏這裡,對應到一個 For 循環,名字取的是 Excel 表格第一列的內容。

我們發現,打開的 KML 文件,又比我們的宏多了一段,從到這一整段,我試過,刪掉也一樣打開。

關鍵是 coordinates 這裡,經緯度,按這個格式填上就完事了。

【4】延伸的分類功能

我們宏這裡,還有一個 If 的判斷,是對 [J1] 進行匹配的,這個功能用於座標點很多的時候,我們往往會把它們歸類為不同的分組。

我們在WE008 用到的自動獲取列表的方法,可以在這裡應用上。

【5】線的 KML 文件生成

我們 Excel 表格這裡,還有一個 生成線 的按鈕, D,E,F 列,還有 3 列填座標點的地方,這就是我們用來生成線的 KML 文件的。

其實跟生成點一樣,也是先在地圖上畫條線,然後用 記事本 打開,對著寫就可以了,具體怎麼寫我就不再累贅,會把代碼發出來供大家直接學習。

四、本期代碼文字版

代碼將通過另一篇文章來分享給有需要的朋友,敬請關注。

零基礎學Excel VBA-WE015【一鍵生成KML文件】


分享到:


相關文章: