【VBA】Excel 接合したセルの番地を知る方法(結合セル対応)

VBA

Excel VBA 一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

【VBA】Excel 指定されたExcelファイルを読み込む方法
【VBA】セルに指定したExcelファイルを読み込むことができます。

今回は、とっても価値の高い方法をお伝えします。


これを知ることであなたは、

結合されたセルを華麗に処理することができます。

 

セルが結合されていると、データがどのセルなのかが
とてもわかりにくくなります。

個人的には、セルを結合しないほうがいいと思っているのですが、
そうは言っても「セル結合大好き派」が多数いるので、その対応が
必要です。

こうすることで、結合されたセルも展開することが
できるので何かと便利です。

どうするかというと、一旦読み込んで、テンポラリシートに
出力するだけです。

後は、ご自由に処理を追加してください。

 

VBAスクリプト

指定されたパスからExcelファイルを読み込む

前回と同じスクリプトです。

'------------------------------------------
'指定されたパスとシートNoからワークシートを読み込む
'FilePath ファイルのフルパス
'SheetNo シートNo
'戻り値 ファイルの中身
'------------------------------------------
Public Function GetExcelData(ByVal FilePath As String, ByVal SheetNo As Integer) As Variant
Dim wb As Workbook
Dim ws As Worksheet

'ワークブックを開く
Set wb = Workbooks.Open(FilePath)

'シートを取得
Set ws = wb.Worksheets(SheetNo)

'データ入力されている範囲を取得する
GetExcelData = ws.UsedRange

'ワークブックを閉じる
wb.Close

'メモリー開放
Set ws = Nothing
Set wb = Nothing

End Function

 

読み込んだ内容をテンポラリシートに出力する
'------------------------------------------
'ファイルを読み込み結合されているセルの中身のみ
'テンポラリシートに出力する
'------------------------------------------
Function ReadContents()
Dim FilePath As String
Dim InSheetNo As String
Dim AllData As Variant



With ThisWorkbook.Sheets(1)
FilePath = .Range("B1")
InSheetNo = .Range("B2")
End With

AllData = GetExcelData(FilePath, InSheetNo)


Dim MaxRow As Integer, MaxCol As Integer

' '最大行数を取得する
MaxRow = UBound(AllData, 1)

'最大列数を取得する
MaxCol = UBound(AllData, 2)


Debug.Print "行数=", MaxRow, " 列数=", MaxCol,


'テンポラリシートのクリア
ThisWorkbook.Sheets(2).Cells.Clear


'自ワークブックの1番目のシートのセルA1を基点に取り込んだデータを出力する
ThisWorkbook.Sheets(2).Range("A1").Resize(MaxRow, MaxCol).Value = AllData


End Function

テスト方法

Step1.
以下の内容のサンプルシートを作成します。

B1セルにフルパス
B2セルにシート番号

 

Step2.

①B1セルに読み込むエクセルファイルをフルパスで入力します。

*Shift+右クリックでパスをコピー後、B1セルにそのままコピペすると楽です。

 

Step3.

上記スクリプトを貼り付けてReadContentsを実行します。
(あらかじめテンポラリ用のシートを作っておいてください)

実行結果

以下のファイルを読み込むと

こんな風にテンポラリシートに出力されます。

 

以上です。

 

 

 

最後までご覧いただきありがとうございます。

つぎはこちら

【VBA】Excel チェックボックスがONのシートを印刷する
EXCELでチェックボックスの値を手軽に取得できます。 VBAから簡単に印刷できます。

Excel VBA 一覧

コメント

タイトルとURLをコピーしました