FAQ
VBAを使用してパーソナル ジオデータベースを新規作成する方法

ナレッジ番号:5518 | 登録日:2023/07/27 | 更新日:2024/11/21

【概要】

VBAプログラミングにより、パーソナル ジオデータベースを新規作成する方法について解説します。

【手順】

下記のステップで行います。

  1. ArcCatalogを起動します。

  2. UIButtonControlを新規作成します。

  3. A. [ツール] > [カスタマイズ]からカスタマイズ ダイアログ ボックスを開きます。
    B. [コマンド]タブを選択します。
    C. [カテゴリ] リストボックスから[UIControls]を選択します。
    D. [保存先]ドロップダウン リストで’Normal.gxt’が選択されていることを確認します。
    E. [新規 UIControl]をクリックします。
    F. UIButtonControl を選択し、[作成]をクリックします。
    G. 新規UIButtonControlを任意のツールバーにドラッグします。
    H. [カスタマイズ]ダイアログを閉じます。

    ※既存のUIButtonControlが存在する場合、またはUIButtonControl の名前を変更したい場合は、
    ボタンが使用される前にUIButtonControlのコード部分についても適宜変更しなければなりません。

  4. Visual Basic Editorを開きます(ArcCatalogの[ツール] > [マクロ] > [Visual Basic Editor])。


  5. プロジェクト エクスプローラ ウィンドウで、'Normal (Normal.gxt)' を展開し、ArcCatalog Objects > ThisDocumentを選択します。右クリックして、[コードの表示]を選択します。


  6. 以下のコードをコード モジュールにコピー&ペーストします。
  7. 
    
    Private Sub UIButtonControl1_Click()
        CreateGeodb
    End Sub
    
    Private Sub CreateGeodb()
        Dim pGxApp As IGxApplication
        Set pGxApp = Application
        Dim pSelObj As IGxObject
        Set pSelObj = pGxApp.SelectedObject
        Debug.Print pSelObj.Category
        If pSelObj.Category = "フォルダ" Or pSelObj.Category = "フォルダ コネクション" Then
            Dim location As String
            location = pSelObj.FullName
            Dim name As String
            name = "mydb"
            Dim mypath As String
            mypath = location & "\" & name & ".mdb"
            Dim bWorkspExist As Boolean
            bWorkspExist = PgdbExists(mypath)
            If bWorkspExist = False Then
                Call createAccessWorkspace(location, name)
                Call AddGeodb(mypath)
                pGxApp.Refresh location
                MsgBox mypath & "が作成されました。", vbInformation
            Else
                MsgBox name & "パーソナル ジオデータベースは現在の場所にすでに存在します。", vbExclamation
                Exit Sub
            End If
        Else
            MsgBox "この場所にパーソナル ジオデータベースを作成することはできません。" & vbNewLine & "フォルダの場所を選択してください。", vbExclamation
            Exit Sub
        End If
    End Sub
    
    Private Function PgdbExists(mypath As String) As Boolean
        Dim pGPValue As IGPValue
        Set pGPValue = New DEWorkspace
        pGPValue.SetAsText mypath
        Dim pDEUtil As IDEUtilities
        Set pDEUtil = New DEUtilities
        PgdbExists = pDEUtil.Exists(pGPValue)
    End Function
    
    ''
    '' AccessWorkspaceFactory(パーソナル ジオデータベースを作成するために必要なワークスペース ファクトリ)を作成します。
    '' メモ:
    ''   パス名の最後に'\'を含める必要はありません。
    ''   名前に拡張子(.mdb)を含めてはいけません。
    
    Public Function createAccessWorkspace(location As String, name As String) _
               As IWorkspaceName
    
        On Error GoTo EH
        Set createAccessWorkspace = Nothing
        
        ' AccessWorkspaceFactoryを作成します。
        Dim pWorkspaceFactory As IWorkspaceFactory
        Set pWorkspaceFactory = New AccessWorkspaceFactory
        
        Dim pWorkspaceName As IWorkspaceName
        Set pWorkspaceName = pWorkspaceFactory.Create(location, name, Nothing, 0)
        
        Set createAccessWorkspace = pWorkspaceName
        Exit Function
       
    EH:
        MsgBox Err.Number, vbInformation, "createAccessWorkspace"
    End Function
    
    Sub AddGeodb(mypath As String)
        Dim pwf As IWorkspaceFactory
        Set pwf = New AccessWorkspaceFactory
        Dim pfws As IFeatureWorkspace
        Set pfws = pwf.OpenFromFile(mypath, 0)
    End Sub
    
    
  8. 新規ボタンをクリックし、パーソナル ジオデータベースを新規作成します。
■関連情報

メタデータ

機能

種類

製品