tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル エクセルのアクティブBOOKの取得
投稿日: 2009/08/04(Tue) 11:32
投稿者GEN
以下質問があります、ご存知の方 ご教授お願いいたします。

VB歴:VB6(6年),VB2008(半年),VBA(2年ぐらい)
使用環境:VB2008(Express版)+ Excel2007

VBプログラム上で、既に複数起動している EXCELブックで、アクティブなブック→シート→
セルへ文字列を出力したいのですが、どのようにして、アクティブセル情報を取得すれば
よろしいでしょうか?

VB上でインスタンスを作成して起動したExcelブックのアクティブシート・セルの情報は
下記コードで取得可能なのですが、そのつど、VB上から起動したブックでないと、
取得は出来ないのでしょうか?

【やりたいこと】
・既に起動している、複数のBOOKがあって、後から立ち上げたVBブログラムで参照したい。
・VBプログラムが立ち上がっていて、後で作済みのエクセルブックを複数上げて
アクティブブックを参照したい。(エクセルVBAでアクティブなブック→シート→セル の参照方法でも参考になりますので、アドバイスお願いいたします。)


Imports Microsoft.Office.Interop
Public Class Form1
    'ExcelイベントをVBで制御・監視するための定義(VBイベントとして組み込む)
    Public WithEvents xlApp As Excel.Application 'Excelアプリケーションイベント変数
    Public WithEvents xlBook As Excel.Workbook 'Excelワークブックイベント変数
    Public WithEvents xlSheet As Excel.Worksheet 'Excelワークシートイベント変数
    Public WithEvents xlChart As Excel.Chart 'Excelチャートイベント変数

    Public X As Integer
    Public Y As Integer
    Public Z As String
    Public S As String

    Public ActAdress As String

    '新規Excelファイルを作成する
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Excelインスタンスの生成
        xlApp = CreateObject("Excel.Application")
        xlBook = xlApp.Workbooks.Add
        'xlSheet = xlBook.Worksheets(1)
        xlSheet = xlBook.ActiveSheet

        xlApp.Visible = True  'Excelアプリケーションを表示させる。FALSEだと非表示です。

        xlBook.Activate()

        X = xlApp.ActiveCell.Row
        Y = xlApp.ActiveCell.Column
        Z = xlApp.ActiveCell.Address

    End Sub

    Private Sub Form_QueryUnload(ByVal Cancel As Integer, ByVal UnloadMode As Integer)
        'インスタンスの解放
        xlApp = Nothing     'CreateObject("Excel.Application")
        xlBook = Nothing    'xlApp.Workbooks.Add
        xlSheet = Nothing   'xlBook.Worksheets(1)
        xlChart = Nothing   'xlChart
        End
    End Sub
  
  'WorkBookのイベントに記述することでシート間の参照も可能。
    Private Sub xlBook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Microsoft.Office.Interop.Excel.Range) Handles

xlBook.SheetSelectionChange
        X = xlApp.ActiveCell.Row
        Y = xlApp.ActiveCell.Column
        S = xlApp.ActiveSheet.name
        Z = xlApp.ActiveCell.Address
    
    'アクティブセルへ情報書き込み
        xlApp.ActiveSheet.Cells(X, Y).value = S & "&" & Z

    End Sub
End Class

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。