他のExcelファイルからデータを集計/グラフ用のシートにコピー(Rangeって深い)

Rage(“B1:C2”).Select のような複数のセルをActiveCellで指定する方法には

ActiveCellがA1とした場合

Excel.Range(Excel.ActiveCell.Offset(0, 1), Excel.ActiveCell.Offset(1, 2)).Select

Rangeオブジェクトって深いわ。

「,」カンマで範囲が指定できるんね。やってみるもんだ。複数も範囲を複数指定もできるしね。

また、

Excel.RangeもあるけどWorkSheet.Rangeもある。

VBEでオブジェクトブラザF2でRangeを検索

ActiveCellは、Excel.ActiveCell(Excel.Application.ActiveCell)しか無い。

VBEでオブジェクトブラザF2でActiveCellを検索

以下は、完成したコード

Option Explicit
Dim pwb As Workbook, cwb As Workbook

Sub main()
    myChdir
    getXlsFile
    myCopy
End Sub

Sub myChdir()
    VBA.ChDir VBA.Replace(VBA.CurDir, "Documents", "Downloads")
End Sub

Sub getXlsFile()
    Dim x
    x = VBA.Dir("*_hitetu_kmc.xls")
    Do Until VBA.Now - VBA.FileDateTime(x) < 1 / 24
        x = Dir
    Loop
    Excel.Workbooks.Add x
    Set cwb = Excel.Workbooks(2)
    Set pwb = Excel.Workbooks(1)
End Sub

Sub myCopy()
    cwb.Worksheets("伸銅・アルミ圧延").Select
    Excel.Range("A1").Select
    Do Until Excel.ActiveCell = "はく"
        Excel.ActiveCell.Offset(1, 0).Select
    Loop
    cwb.Activate
    Excel.Range(Excel.ActiveCell.Offset(0, 1), Excel.ActiveCell.Offset(0, 7)).Select
    Selection.Copy
    pwb.Activate
    Sheets("Sheet1").Select
    Excel.Range("b1").Select
    Do Until "" = Excel.ActiveCell
        Excel.ActiveCell.Offset(1, 0).Select
    Loop
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    cwb.Close
End Sub
(Visited 106 times, 1 visits today)
カテゴリー: 8 ExcelとVBEの関係、Wordとのデータ処理 Excelオブジェクト パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です