「access vba excel セルの結合」
「access vba excel 操作 セル結合」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスが時折あります。
Access VBAで、Excelのセル結合を行うにはどのようなコードを書けばいいのかを調べていらしたのでしょう。
この記事では、Access VBAでExcelのセル結合を行う基本のコードをご紹介します。
Access VBAでExcelのセル結合をサンプルプロシージャ
新規のExcelブックを1つ開いておいて、以下のSubプロシージャを実行してください。
On Error GoTo ErrHandl
Dim xl_app As Object
Set xl_app = GetObject(Class:="Excel.Application")
xl_app.Range("A1:B2").Merge
xl_app.Range("A4", "B5").Merge
Set xl_app = Nothing
Exit Sub
ErrHandl:
Select Case Err.Number
Case 429
MsgBox "Excelが起動していないようです。"
Case 91
MsgBox "Excelファイルが開かれていないようです。"
Case Else
MsgBox Err.Description & vbCrLf & Err.Number
End Select
Err.Clear
End Sub
上記のSubプロシージャが正常に実行されると、起動済ExcelのアクティブシートA1:B2セルの結合と、A4:B5セルの結合が行われます。
サンプルプロシージャで行っている処理
VBAのGetObject関数を使って起動しているExcel.Applicationへの参照を取得するコードは、既にご紹介しているとおりです。
Dim xl_app As Object Set xl_app = GetObject(Class:="Excel.Application")
Excel.Applicationオブジェクトへの参照を取得した後の、変数xl_appを経由したコードは、実質的にExcel VBAです。
Excel.Access.Rangeの引数を1つ指定する場合
第1引数Cell1に文字列「A1:B2」を指定すると、アクティブシートのA1:B2セルを表すRangeオブジェクトが取得できます。
xl_app.Range("A1:B2").Merge
そのExcel.RangeオブジェクトのMergeメソッドを呼び出すことで、
A1:B2セルの結合を行っています。
xl_app.Range("A1:B2").Merge
Excel.Access.Rangeの引数を2つ指定する場合
つづいて、Excel.Application.Rangeプロパティの第1引数Cell1に文字列「A4」を、第2引数Cell2に文字列「B5」を指定すると、
xl_app.Range("A4", "B5").Merge
アクティブシートのA4:B5セルを表すRangeオブジェクトが取得できます。
拙著『いちばんやさしいExcelVBAの教本』の、[Lesson 59 Rangeオブジェクトを取得するプロパティについて学習しましょう]で、以下のように解説しています。
『いちばんやさしいExcelVBAの教本』p.217より
このRangeプロパティの引数を2つとも指定しているのが「.Range("A4", "B5")」
xl_app.Range("A4", "B5").Merge
です。
「xl_app.Range("A4", "B5")」で取得したRangeオブジェクトからMergeメソッドを呼び出すことで、A4:B5セルの結合を行っています。
xl_app.Range("A4", "B5").Merge
Home » Access VBA » Access VBAでExcelのセル結合を行う基本