Home » Access VBA » Access VBAでExcelのセル結合を行う基本

Access VBAでExcelのセル結合を行う基本

動作検証バージョン:Windows 11 Home + 64bit Access & Excel バージョン 2403(ビルド17404.20000クイック実行)ベータチャネル

「access vba excel セルの結合」
「access vba excel 操作 セル結合」
といった検索で、このサイト『インストラクターのネタ帳』へのアクセスが時折あります。

Access VBAで、Excelのセル結合を行うにはどのようなコードを書けばいいのかを調べていらしたのでしょう。

[スポンサードリンク]

この記事では、Access VBAでExcelのセル結合を行う基本のコードをご紹介します。

Access VBAでExcelのセル結合をサンプルプロシージャ

新規のExcelブックを1つ開いておいて、以下のSubプロシージャを実行してください。

Sub Excelのセルを結合する()
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つ指定する場合

Excel.Application.Rangeプロパティ

第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のセル結合を行う基本

「Access VBA」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.