ドラッグアンドドロップでEXCELシートの一覧を取得する

.NET (VB)の内容
【注意書き】
●VB.NET を使っているものとします。
●動作環境は、Windows XX を使用しているとします。
●Microsoft Excel X.X Object Library を使用しています。


.NET でも、ドラッグアンドドロップでEXCELシートの一覧を取得
することが可能です。

この機能を使えば、簡単に、指定するEXCELシートを
アプリケーション側から選択操作させたりする
場合などに活用できます。


フォームに次の様なコードを記述します


-----------VB.NETコーディングここから-------------------

1.メニューバーの中に、「プロジェクト」→「参照の追加」
 から、Microsoft Excel X.X Object Libraryを1つ選んで、
 「OK」を押します。
  この操作で、参照が追加されます。
  ※バージョンは、X.Xの部分が数字です。
      Microsoft Excel 9.0 Object Library、
      Microsoft Excel 10.0 Object Libraryなど


2.フォームに、リストボックスコントロール
    を配置します。
    下記は、デフォルトのオブジェクトの名前と配置を示しています。

   ┏━━━━━━━━━━━━┓
   ┃ListBox1                ┃
   ┃                        ┃
   ┃                        ┃
   ┗━━━━━━━━━━━━┛



3.フォームをダブルクリックして、
    フォームロードイベントのコード編集を開始して、
    次のコードを記述します。


    'Excelのアプリケーションを操作するために、変数定義しています
    Dim MjstrPicPath As String
    Dim MjobjExcel As Excel.Application


    Private Sub Form1_DragDrop(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.DragEventArgs) _
    Handles MyBase.DragDrop

        MjstrPicPath = e.Data.GetData(DataFormats.FileDrop)(0)


        If Dir(MjstrPicPath) <> "" Then

            'OPN_FILE(MjstrPicPath)

            'オブジェクトのインスタンス作成
            MjobjExcel = CType(CreateObject("Excel.Application"), _
                         Excel.Application)
            'ワークブックのオープン
            MjobjExcel.Workbooks.Open(MjstrPicPath, , True)

            'ファイルからシートの一覧を取得します
            Call GET_EXCEL_SEETLIST(MjobjExcel)

            MjobjExcel.Workbooks.Close()
            MjobjExcel.Quit()

            MjobjExcel = Nothing


        End If

    End Sub

    Private Sub Form1_DragEnter(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.DragEventArgs) _
    Handles MyBase.DragEnter


        '関連連づけの確認をしています。
        'この場合、ドラッグアンドドロップの形式であるかどうか?
        If e.Data.GetDataPresent(DataFormats.FileDrop) Then

            'ドロップ効果を取得
            e.Effect = DragDropEffects.Copy
        Else
            'ドロップ効果を破棄
            e.Effect = DragDropEffects.None
        End If

    End Sub

    Private Sub Form1_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        Me.AllowDrop = True

    End Sub



    Sub GET_EXCEL_SEETLIST(ByVal PiobjEXCEL As Object)
        Dim intCnt As Integer


        For intCnt = 1 To PiobjEXCEL.Application.Worksheets.Count
            If PiobjEXCEL.Application.Worksheets(intCnt).Visible = _
            True Then

                'ファイルの一覧に追加
                ListBox1.Items.Add( _
                PiobjEXCEL.Application.Worksheets(intCnt).Name)

            End If
        Next

    End Sub



4.ビルドして実行します。

5.EXCELファイル(拡張子 .XLS )を
    フォームにドラッグアンドドロップでドロップします。

6.フォームに表示された
    リストボックスに、ドラッグアンドドロップした
    EXCElファイルに存在するシートの一覧が表示されます。




-----------VB.NETコーディングここまで-------------------

本サンプルでは、エクスプローラ等から、ファイルのドラッグアンドドロップ
の操作でファイルのパスを受け取っています。

EXCELファイルの識別チェックは行っておりません。




 

http://anetm.com/dev/d.cgi?SC=DTDTL&o=OVV

Copyright(c)2001-2006 Ai Net Makoto 記事・情報の無断転載を禁止します。