KMLファイルをVBAでCSVファイルに変換する

スポンサーリンク

前回、VBAによるKMLファイルの読み込みを記事にしました。

今回は、読み込んだKMLファイルのデータを用いてCSVファイルへ変換するコードを紹介します。

スポンサーリンク

KML→CSV変換コード

使用される際は、そちらの環境で十分テストのうえ使用してください。

Sub Convert_KML_To_CSV()

'KMLファイルをcsvファイルに変換する

Dim strTgTfldNM As String 'ターゲットフォルダを格納する
Dim strTgTfleNM As String 'ターゲットファイルを格納する

'アクセスのあるフォルダのパスを取得
strTgTfldNM = Application.CurrentProject.Path

'読み込むKMLファイル名を設定
strTgTfleNM = "須磨駅から神戸須磨シーワールドまでのルート.kml"

Dim Objkml As Object 'xml操作用オブジェクト

'要素格納用変数
Dim youso_LineString As Object
Dim youso_coordinates As Object

'CSVファイル出力用のデータを格納する変数
Dim strCSV As String

Dim obj_AdoSt As Object 'ADOファイルストリームを使用してテキストを出力する

'変数をリセット
strCSV = ""

Set Objkml = CreateObject("MSXML2.DOMDocument")

    With Objkml
    
        'KMLファイル読み込み
        .Load strTgTfldNM & "\" & strTgTfleNM
        
        Set youso_LineString = .getElementsByTagName("LineString").Item(0)
        
        For Each youso_coordinates In youso_LineString.getElementsByTagName("coordinates")
            
            'CSVファイル出力用の変数に格納
            strCSV = strCSV & Replace(youso_coordinates.Text, " ", "")
        
        Next youso_coordinates
    
    End With

'CSVファイル出力
strTgTfldNM = CurrentProject.Path  '出力先はこのAccessファイルのあるフォルダ
strTgTfleNM = "waq3.CSV"

'ターゲットフォルダ内のCSVファイルの有無をチェック
If Dir(strTgTfldNM & "\" & strTgTfleNM) <> "" Then

    MsgBox "同名のファイルがあります", vbCritical
    
    '出力先のフォルダを開く
    Application.FollowHyperlink strTgTfldNM
    Exit Sub
End If


'CSVファイル出力

'上書きモードでファイルをオープン
Set obj_AdoSt = CreateObject("ADODB.Stream")

' 文字コードを指定(UTF-8で出力)
obj_AdoSt.Charset = "UTF-8"

' 改行コードを指定(-1はCRLF)
obj_AdoSt.LineSeparator = -1

' オープン
obj_AdoSt.Open

obj_AdoSt.WriteText strCSV, 1

'CSVファイルの保存
obj_AdoSt.SaveToFile strTgTfldNM & "\" & strTgTfleNM, 2
obj_AdoSt.Close

MsgBox "処理終了", vbInformation

End Sub

上記のVBAコードを実行すると、アクセスが置いてあるフォルダ内に「waq3.CSV」というCSVファイルを作成します。

コメントをどうぞ!

タイトルとURLをコピーしました