About
NAME
Excel4Macro– [Excel4Macroクラスモジュール]
作成日:2012/02/18 更新日:2013/07/05 動作環境:[Excel 2000-2016]
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をダウンロードします。
ダウンロードが完了したらzipファイルを解凍してください。そこに実行ファイルが含まれています。
HOW TO USE — 使用方法
ダウンロードが完了したらマクロを有効にして開いてください。そこにサンプルモジュールと本モジュールが含まれています。
※クラスをエクスポート、インポートする事で別のExcelBookでも使用することが出来ます。
最初に[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
本ソフトの[readme.txt]に「NAME/VERSION/AUTHOR/COPYRIGHT」が記載されています。
CONTRIBUTION
寄付歓迎
本モジュールはフリーですが、「このモジュールのおかげで、素晴らしいソフトが作れた」など、寄付をしていただける方がいましたら、作者宛までご一報ください。
DOWNLOAD
VERSION
Version:1.00 – Sat Feb 18, 2012
Version:1.01 – Fri Jul 5, 2013 | 対象ファイルがない場合、エラーを表示して終了する処理を追加。
AUTHOR
Syunzi Shimohata < webmaster@taru-net.jp > https://www.taru-net.jp/