ご訪問ありがとうございます。
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から簡単に印刷できます。