プロが教えるわが家の防犯対策術!

エクセルのブックが複数あります。(親ブック・子ブック1・子ブック2・子ブック3)
親ブックのsheet1の一列目に名前が入っています。
一列目に入っている名前と同じシートが子ブックにそれぞれあり、
セルの値とシート名が同じ場合、
B48からB56のセルの結合を解除するにはどうすれば良いでしょうか。

A 回答 (3件)

表示されてすべてのブックについて、セル結合の解除を行います。

(親ブックを除く)
以下のマクロを、標準モジュールに登録してください。

Option Explicit
Public Sub セル結合解除()
Dim ms As Worksheet
Dim maxrow As Long
Dim bname
Dim wb As Workbook
Dim i As Long
Set ms = Worksheets("Sheet1")
'Sheet1の最大行取得
maxrow = ms.Cells(Rows.Count, 1).End(xlUp).Row
'表示されているブックを全件処理する
For i = 1 To Workbooks.Count
bname = Workbooks(i).Name
'ブック名が親ブック(マクロのあるブック)でないなら処理する
If bname <> ThisWorkbook.Name Then
Set wb = Workbooks(bname)
'そのブックのセル結合解除
Call kaijo(ms, maxrow, wb)
End If
Next
MsgBox ("完了")
End Sub
'セル結合解除
Private Sub kaijo(ByRef ms As Worksheet, ByVal maxrow As Long, ByRef wb As Workbook)
Dim wrow As Long
Dim sname As String
'Sheet1の1行から最終行まで繰り返す
For wrow = 1 To maxrow
sname = ms.Cells(wrow, 1).Value
'シート名が、処理中のブック中に存在するなら
If check_sheet(wb, sname) = True Then
'そのシートのセル結合を解除する
wb.Worksheets(sname).Range("B48").UnMerge
End If
Next
End Sub
'シート存在チェック
Private Function check_sheet(ByRef wb As Workbook, ByVal sname As String) As Boolean
Dim i As Long
'処理中のブック内の全シートをチェックする
For i = 1 To wb.Worksheets.Count
'シート名が同じなら、そのシートが存在する
If LCase(sname) = LCase(wb.Worksheets(i).Name) Then
check_sheet = True
Exit Function
End If
Next
check_sheet = False
End Function
    • good
    • 2
この回答へのお礼

お礼が遅くなり、申し訳ありません!!!
やりたいと思っていたことができました。
ありがとうございました!!!

お礼日時:2022/10/05 14:26

補足要求です。


1.マクロを格納するのは、親ブックですか。それとも、他のマクロ専用のブックですか。

2.親ブック、子ブック1、子ブック2、子ブック3は既に開いている(オープンされている)前提で良いですか。

3.親ブックのsheet1の一列目に名前が入っているということですが、
名前が入っているセルはA1のみですか?、それとも、B1,C2・・・のように横にずらっと設定されているのですか?

4.子ブックの数は3個のみですか。(子ブック4,5等はない)
    • good
    • 0
この回答へのお礼

ありがとうございます。

1.マクロを格納するのは、親ブックですか。それとも、他のマクロ専用のブックですか。
>親ブックです

2.親ブック、子ブック1、子ブック2、子ブック3は既に開いている(オープンされている)前提で良いですか。
>はい、既に開いています


3.親ブックのsheet1の一列目に名前が入っているということですが、
名前が入っているセルはA1のみですか?、それとも、B1,C2・・・のように横にずらっと設定されているのですか?
>A列のみです。
A2.A3.A4・・・にシートの名前が入っています。
B列からO列までは他の情報が入っています。

4.子ブックの数は3個のみですか。(子ブック4,5等はない)
いいえ、18ファイルあります

お礼日時:2022/10/03 15:58

マクロ(VBA)でやりたいということでしょうか。

    • good
    • 0
この回答へのお礼

はい、たくさんのシートがある為、VBAでやりたいのです。

お礼日時:2022/10/03 14:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!