YouTube | Facebook | X(Twitter) | RSS

ArcMap の TOC で複数の選択マップやレイヤーを取得する方法

2016/9/1 (木)

Sub GetSelectedItems()
    Dim pMxDocument As IMxDocument
    Set pMxDocument = ThisDocument
     
    Dim pContentsView As IContentsView
    Set pContentsView = pMxDocument.ContentsView(0) '最上位データフレーム
     
    Dim mySet As ISet
    Set mySet = New esriSystem.Set
     
    Dim pVariant As Variant
    Set pVariant = pContentsView.SelectedItem
     
    Dim pUnknown As IUnknown
    Dim pMap As IMap
    Dim pLayer As ILayer
    Dim i As Long
     
    'データフレーム
    If TypeOf pVariant Is IMap Then
        Set pMap = pVariant
        Debug.Print pMap.Name
     
    'レイヤ
    ElseIf TypeOf pVariant Is ILayer Then
        Set pLayer = pVariant
        Debug.Print pLayer.Name
     
    '複数データフレーム/レイヤ
    ElseIf TypeOf pVariant Is ISet Then
        Set mySet = pVariant
         
        For i = 0 To mySet.Count - 1
             
            Set pUnknown = mySet.Next
                                
            If TypeOf pUnknown Is IMap Then
                Set pMap = pUnknown
                Debug.Print pMap.Name
                 
            ElseIf TypeOf pUnknown Is ILayer Then
                Set pLayer = pUnknown
                Debug.Print pLayer.Name
                 
            End If
        Next
         
    End If
     
End Sub
  • この記事を書いた人

羽田 康祐

伊達と酔狂のGISエンジニア。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-プログラミング, ArcGIS
-,