NAME

Excel4Macro -- Excel4Macro ClassModule


SYNOPSIS

        Sub Main()
            Dim objExcel4Macro As New Excel4Macro
            Dim value As Variant

            objExcel4Macro.Books = "C:\test.xls"
            objExcel4Macro.Sheets = "Sheet1"

            value = objExcel4Macro.Cells(1, 1)

            MsgBox (value)
        End Sub
		

DESCRIPTION



AN OUTLINE -- 概要

[ExecuteExcel4Macro]を使用した、ExcelBookを直接開かずに値を読み取るクラスで、[ExecuteExcel4Macro]を直感的に使いやすくまとめたクラスモジュールになります。
ExcelBookをメモリ上に展開しないので少数のセル値を読み取る場合、いくつものExcelBookを連続で開く処理がある場合は、こちらのほうが高速に動作すると思います。

また、個数、合計、最大などを求めるメソッドも付けてみましたので、他の関数を組み込むなどの参考にしてみてください。

しかし、Excelの処理として出来る事は、ExcelBookを開いてメモリー上に展開した場合の方が多いですので場面によって使い分けてください。

主な機能:
・ExcelBookを直接開かずにセルの値を読み取る。
・ExcelBookを直接開かずに指定範囲のセル値を読み取る。
・ExcelBookを直接開かずに指定範囲の合計、最大、最小、個数を求めることが出来る。



PREPARATION -- 準備

[DOWNLOAD] から、本ExcelBookをダウンロードします。

ダウンロードが完了したらマクロを有効にして開いてください。そこにサンプルモジュールと本モジュールが含まれています。

※クラスをエクスポート、インポートする事で別のExcelBookでも使用することが出来ます。



HOW TO USE -- 使用方法

最初に[Dim objExcel4Macro As New Excel4Macro]を宣言し、オブジェクトを使用可能にします。
オブジェクトを[Dim objExcel4Macro]とした場合の記述方法は以下の通りです。

        Dim objExcel4Macro As New Excel4Macro
		
○ExcelBookパスセット「Excel4Macro.Books」プロパティ
対象とするExcelBookのファイルパスをセットするには、「Excel4Macro.Books」プロパティを使用します。
        objExcel4Macro.Books = "C:\hoge.xls"
		
○ExcelSheet名セット「Excel4Macro.Sheets」プロパティ
対象とするExcelBookのシート名をセットするには、「Excel4Macro.Sheets」プロパティを使用します。
        objExcel4Macro.Sheets = "Sheet1"
		
○セル番地を指定して値を取得「Excel4Macro.Cells」メソッド
値を取得したいセル番地を直接指定するには、「Excel4Macro.Cells」メソッドを使用します。
Excel4Macro.Cells(行番号,列番号)と入力し、戻り値は[Variant]型となります。
注:セルの範囲を超えた数値や、数値以外を入力、引数省略の場合はエラーとなります。
        value = objExcel4Macro.Cells(1,1)
		
○セル範囲を指定して値を取得「Excel4Macro.Range」メソッド
[A1:B2]のように範囲を指定して値を取得するには、「Excel4Macro.Range」メソッドを使用します。
Excel4Macro.Range("A1:B2")とA1形式を入力し、戻り値は二次元配列(,)[Variant]型となります。
注:セルの範囲を超えた値や、A1形式以外を入力、引数省略の場合はエラーとなります。
        value = objExcel4Macro.Range("A1:B2")
		
○セル範囲の合計値を取得「Excel4Macro.Sum」メソッド
[A1:B2]のような範囲内にあるセル値の合計値を取得するには、「Excel4Macro.Sum」メソッドを使用します。
Excel4Macro.Sum("A1:B2")と入力し、戻り値は[Variant]型となります。
注:セルの範囲を超えた値や、A1形式以外を入力、引数省略の場合はエラーとなります。
        value = objExcel4Macro.Sum("A1:B2")
		
○セル範囲の個数を取得「Excel4Macro.Count」メソッド
[A1:B2]のような範囲内にあるセル値の個数を取得するには、「Excel4Macro.Count」メソッドを使用します。
Excel4Macro.Count("A1:B2")と入力し、戻り値は[Variant]型となります。
注:セルの範囲を超えた値や、A1形式以外を入力、引数省略の場合はエラーとなります。
注:空白セルはカウントしませんが、「0」はカウント対象になります。
        value = objExcel4Macro.Count("A1:B2")
		
○セル範囲の最大値を取得「Excel4Macro.Max」メソッド
[A1:B2]のような範囲内にあるセル値の最大値を取得するには、「Excel4Macro.Max」メソッドを使用します。
Excel4Macro.Max("A1:B2")と入力し、戻り値は[Variant]型となります。
注:セルの範囲を超えた値や、A1形式以外を入力、引数省略の場合はエラーとなります。
        value = objExcel4Macro.Max("A1:B2")
		
○セル範囲の最小値を取得「Excel4Macro.Min」メソッド
[A1:B2]のような範囲内にあるセル値の最小値を取得するには、「Excel4Macro.Min」メソッドを使用します。
Excel4Macro.Min("A1:B2")と入力し、戻り値は[Variant]型となります。
注:セルの範囲を超えた値や、A1形式以外を入力、引数省略の場合はエラーとなります。
        value = objExcel4Macro.Min("A1:B2")
		
○R1C1形式→A1形式への変換処理「Excel4Macro.ConvIndex」メソッド
[R1C1]形式をA1形式に変換するには、「Excel4Macro.ConvIndex」メソッドを使用します。
また、[R1C1]形式を用い[Excel4Macro.Range]メソッドを使用する場合に使用します。
Excel4Macro.ConvIndex(1,1)と入力し、戻り値は[Variant]型となります。
注:セルの範囲を超えた値や、[R1C1]形式以外を入力、引数省略の場合はエラーとなります。
        value = objExcel4Macro.ConvIndex(1,1)
        value = objExcel4Macro.Range(objExcel4Macro.ConvIndex(1,1) & ":" & objExcel4Macro.ConvIndex(2,2))
		


EXAMPLE -- 使用例

例1:次のExcelBook[C:\hoge.xls][Sheet1]の[C5]の値を取得する。
        Sub Sample()
            Dim objExcel4Macro As New Excel4Macro
            Dim value As Variant

            objExcel4Macro.Books = "C:\hoge.xls"
            objExcel4Macro.Sheets = "Sheet1"
            value = objExcel4Macro.Range("C5")

            MsgBox (value)
        End Sub
		
例2:次のExcelBook[C:\hoge.xls][Sheet1]の[C5]の値を取得する。其の弐
        Sub Sample()
            Dim objExcel4Macro As New Excel4Macro
            Dim value As Variant

            objExcel4Macro.Books = "C:\hoge.xls"
            objExcel4Macro.Sheets = "Sheet1"
            value = objExcel4Macro.Cells(5,3)

            MsgBox (value)
        End Sub
		
例3:次のExcelBook[C:\hoge.xls][Sheet1]の[A1:C5]の値を取得し表示する。
        Sub Sample()
            Dim objExcel4Macro As New Excel4Macro
            Dim valArray As Variant
            Dim i As Integer
            Dim h As Integer

            objExcel4Macro.Books = "C:\hoge.xls"
            objExcel4Macro.Sheets = "Sheet1"
            valArray = objExcel4Macro.Range("A1:C5")

            For i = 0 To UBound(valArray, 1)
                For h = 0 To UBound(valArray, 2)
                    Debug.Print (valArray(i, h))
                Next h
            Next i
        End Sub
		
例4:次のExcelBook[C:\hoge.xls][Sheet1]の[A1:C5]の値を取得し表示する。其の弐
        Sub Sample()
            Dim objExcel4Macro As New Excel4Macro
            Dim valArray As Variant
            Dim i As Integer
            Dim h As Integer

            objExcel4Macro.Books = "C:\hoge.xls"
            objExcel4Macro.Sheets = "Sheet1"
            valArray = objExcel4Macro.Range(objExcel4Macro.ConvIndex(1, 1) & ":" & objExcel4Macro.ConvIndex(5, 3))

            For i = 0 To UBound(valArray, 1)
                For h = 0 To UBound(valArray, 2)
                    Debug.Print (valArray(i, h))
                Next h
            Next i
        End Sub
		
例5:次のExcelBook[C:\hoge.xls]から、複数シート[Sheet1][Sheet2][Sheet3]の[A1:C5]の値を取得し表示する。
        Sub Sample()
            Dim objExcel4Macro As New Excel4Macro
            Dim valArray As Variant
            Dim valSheets(2) As Variant
            Dim str As Variant
            Dim i As Integer
            Dim h As Integer

            valSheets(0) = "Sheet1"
            valSheets(1) = "Sheet2"
            valSheets(2) = "Sheet3"

            objExcel4Macro.Books = "C:\hoge.xls"

            For Each str In valSheets
                objExcel4Macro.Sheets = str
                valArray = objExcel4Macro.Range("A1:C5")

                For i = 0 To UBound(valArray, 1)
                    For h = 0 To UBound(valArray, 2)
                        Debug.Print (valArray(i, h))
                    Next h
                Next i
            Next str
        End Sub
		
例6:次のExcelBook[C:\cat.xls][C:\dog.xls][C:\hoge.xls]それぞれの複数シート[Sheet1][Sheet2][Sheet3]から、[A1:C5]の値を取得し表示する。
        Sub Main()
            Dim objExcel4Macro As New Excel4Macro
            Dim valBooks(2) As Variant
            Dim str As Variant

            valBooks(0) = "C:\cat.xls"
            valBooks(1) = "C:\dog.xls"
            valBooks(2) = "C:\hoge.xls"

            For Each str In valBooks
                objExcel4Macro.Books = str

                Call fncAction(objExcel4Macro)
            Next str

        End Sub


        Private Sub fncAction(ByVal objExcel4Macro As Excel4Macro)
            Dim valArray As Variant
            Dim valSheets(2) As Variant
            Dim str As Variant
            Dim i As Integer
            Dim h As Integer

            valSheets(0) = "Sheet1"
            valSheets(1) = "Sheet2"
            valSheets(2) = "Sheet3"

            For Each str In valSheets
                objExcel4Macro.Sheets = str
                valArray = objExcel4Macro.Range("A1:C5")

                For i = 0 To UBound(valArray, 1)
                    For h = 0 To UBound(valArray, 2)
                        Debug.Print (valArray(i, h))
                    Next h
                Next i
            Next str
        End Sub
		
例7:次のExcelBook[C:\hoge.xls][Sheet1]から、[A1:C5]の合計値を取得し表示する。
        Sub Sample()
            Dim objExcel4Macro As New Excel4Macro
            Dim value As Variant

            objExcel4Macro.Books = "C:\hoge.xls"
            objExcel4Macro.Sheets = "Sheet1"

            value = objExcel4Macro.Sum("A1:C5")

            MsgBox (value)
        End Sub
		


REFERENCE

Name Description Syntax


ATTENTION

・[ThisWorkbook.ActiveSheet]を用いています。

・本クラスモジュールを利用した事によるいかなる損害も一切の責任を負いません。

・感想や要望、不具合などありましたら、作者までご連絡ください。



MEMO

本モジュールの本文中に「NAME/VERSION/AUTHOR/COPYRIGHT」が記載されています。



CONTRIBUTION

寄付歓迎

本モジュールはフリーですが、「このモジュールのおかげで、素晴らしいソフトが作れた」など、寄付をしていただける方がいましたら、作者宛までご一報ください。

なお受け付けている物は、お金(日本通貨円)、食料(酒/缶詰/お米など)となっております。



DOWNLOAD

<<---DOWNLOAD Excel4Macro--->>



VERSION

Version:1.00 - Sat Feb 18, 2012
Version:1.01 - Fri Jul 5, 2013 | 対象ファイルがない場合、エラーを表示して終了する処理を追加。



AUTHOR

Syunzi Shimohata < webmaster@taru-net.jp > http://www.taru-net.jp/