2017-06-06 17 views
0

VS2015でExcel VSTO Addinを作成しようとしています。私はVBAを使ってこれを行うことができましたが、VB.NETで自分の足を濡らしたいと思っています。私が直面している問題は、アクティブワークシートを取得して変数に割り当てる方法です。それから、私は以前のテキストに変換した範囲を渡す必要があります。VB.NET Addin現在のワークシートを選択する方法

マクロは基本的に、範囲を選択して両方のリストに表示される項目を強調表示することで、2つのデータリストを比較することができます。

enter image description here

ここでは、ユーザが(正常に動作します)範囲を選択しようとしたときに実行されるコードだ

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    Try 
     Me.Hide() 
     Dim R As Microsoft.Office.Interop.Excel.Range 
     Dim A As String 
     'note how the Application.InputBox brings up different settings to just InputBox 
     R = Globals.ThisAddIn.Application.InputBox(Prompt:="Please select the reference range", Type:=8) 
     A = R.Address 
     Me.TextBox1.Text = A 
     Me.Show() 
     Me.TopMost = True 
     Exit Sub 

    Catch 
     MsgBox("Please select a valid range!") 
     Me.Show() 
    End Try 
End Sub 

ここでは、2つを比較する必要がある「検索とハイライト」ボタン、背後にあるコードです重複を強調表示します。しかし、これを実行すると、別のワークブックのセルがハイライト表示されます。これは、最初に開いたと思われるものです。私が現在使用しているワークブックを開いていることを確認するにはどうすればよいですか?

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    Dim xlApp As New Excel.Application 
    Dim ws As Excel.Worksheet 
    Dim sheetName As String 
    Dim cell_1 As Excel.Range 
    Dim cell_2 As Excel.Range 
    Dim rng_1 As Excel.Range 
    Dim rng_2 As Excel.Range 

    xlApp = GetObject(, "Excel.Application") 
    ws = xlApp.ActiveSheet 
    sheetName = ws.Name 

    rng_1 = ws.Range(Me.TextBox2.Text) 
    rng_2 = ws.Range(Me.TextBox1.Text) 

    For Each cell_1 In rng_1 
     For Each cell_2 In rng_2 
      If cell_2.Text = cell_1.Text Then 
       cell_2.Interior.ColorIndex = 6 

      End If 
     Next cell_2 
    Next cell_1 

    Me.Close() 

End Sub 

答えて

0

私は答えを見つけたので、次回はこれを検索する必要があります。以下のコードでは、ThisAddInを実際のアドインの名前に変更してください。

Dim wb As Excel.Workbook = Globals.ThisAddIn.Application.ActiveWorkbook 
    Dim ws As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet 
0

対話したいワークブックのファイル名を指定する必要があります。

Dim ExcPro as New Excel.Application 
Dim Excwrkbook as Excel.Workbook=ExcPro.Workbooks.Open("YoufileName") 

Dim ws As Excel.Worksheet = Excwrkbook.ActiveSheet

あなたは、このような、その名など、ブックに関するいくつかの詳細を知っていれば、それは既に開いていた場合にも、ワークブックのコレクションを反復処理することができます。

Dim Exc_Books As Excel.Workbooks = Excpro.Workbooks 
Dim Exc_book As Excel.Workbook = Exc_Books.Item(1) 
+0

ワークブック名​​についてわからない場合はどうすればよいですか?私はこれらの関数を特定のワークブックではなく、どのワークブックでも使用できるようにしたい。ワークブックのファイル名を取得する方法はありますか? – pheeper

関連する問題