- PR -

Excelシートのセルを変数で指定したいのですけれど

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-04 17:54
本題の方で、少し気になるところがありましたので投稿します。

引用:

salfさんの書き込み (2006-07-04 15:54) より:

コード:

    Range(Cells(RowIndex,ColumnIndex),Cells(RowIndex,ColumnIndex)


というふうに指定できますよ。


この方法は VBA 的な方法ですね。

質問者さんは VB7.1 から実装していますから、VSTO だとしてもコンパイル エラーになります。

今回は、COM Interop を使用していますから、
この方法で、コンパイル エラーを失くし、COM 参照の解放も加味すると、
かなり面倒臭い実装になってしまい、逆効果かもしれませんね。

Excel.Worksheet までの道のりはカットして、一部抜粋しますと、

コード:

    Dim xlCells As Excel.Range

    Try
        xlCells = xlWorksheet.Cells
        Dim xlCell1 As Excel.Range

        Try
            xlCell1 = xlCells(1, 1)
            Dim xlCell2 As Excel.Range

            Try
                xlCell2 = xlCells(5, 5)
                Dim xlRange As Excel.Range

                Try
                    xlRange = xlCells.Range(xlCell1, xlCell2)
                    xlRange.Select()
                Finally
                    If Not xlRange Is Nothing Then
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange)
                    End If
                End Try
            Finally
                If Not xlCell2 Is Nothing Then
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlCell2)
                End If
            End Try
        Finally
            If Not xlCell1 Is Nothing Then
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xlCell1)
            End If
        End Try
    Finally
        If Not xlCells Is Nothing Then
            System.Runtime.InteropServices.Marshal.ReleaseComObject(xlCells)
        End If
    End Try


このようになります。(;^-^)

これは、COM Interop だからという理由が大きいです。
つまり、反論ではなく参考までの投稿ということでお願いします。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-05 17:25
引用:

未記入さんの書き込み (2006-07-04 17:29) より:

(検索をおこなったのですけれど、詳細がわからなかったので参照先等 教えてください)


罫線を引くには、「Excel.Border」 あたりを使うことになるのはご存知かと思います。
この、「Excel.Border」 で検索すると、下記スレッドがヒットします。

  何度も出ているExcelプロセスの件です。

ここの、xlBorders 付近を見ると良いです。

ここから、Excel.Border を取得する場合は、Excel.Borders から参照を取る必要があります。
Excel.Border も Excel.Borders も、'使用した分' COM 参照のデクリメントをする必要があるからです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)