|
▼初心者ごろう さん:
もし Ver2 のようで合ってるなら、あとはそれをコードにするだけです。
コード化するとき、開くBookや 貼り付け先がちがうだけで、処理内容が
同じ部分は、サブプロシージャに独立させて、そこをCallするようにします。
↓こんな感じで。
(開いたBookのほうは何ら変更してないので 保存せず閉じています)
Sub 値だけ貼付けVer3()
Const myFolder = "\\kkk\hh\III\YY\DDDDD\DDD\PPPPP\"
Dim Book As Workbook
Application.ScreenUpdating = False
'(1)『その他.xls』を開いて 「集計」シートに値貼り付け
Set Book = Workbooks.Open(myFolder & "その他.xls")
CopyData Book.Sheets("その他"), "A13"
Book.Close
Set Book = Nothing
'(2)『13.xls』を開いて 「集計」シートに値貼り付け
Set Book = Workbooks.Open(myFolder & "13.xls")
CopyData Book.Sheets("QC")
CopyData Book.Sheets("AA")
Book.Close
Set Book = Nothing
'(3)『14.xls』を開いて 「集計」シートに値貼り付け
Set Book = Workbooks.Open(myFolder & "14.xls")
CopyData Book.Sheets("BB")
Book.Close
Set Book = Nothing
Application.ScreenUpdating = True
End Sub
'WS1:コピー元シート strCopyTo: コピー先先頭セル([A13]のときのみ指定)
Private Sub CopyData(ByVal WS1 As Worksheet, Optional strCopyTo$ = "")
Dim y As Long
Dim CopyTo As Range
Dim WS2 As Worksheet
Set WS2 = Workbooks("集計.xls").Sheets("集計")
If IsMissing(strCopyTo) Then
Set CopyTo = WS2.Cells(65536, "A").End(xlUp).Offset(1)
Else
Set CopyTo = WS2.Range(strCopyTo)
End If
With WS1
y = .Cells(65536, "A").End(xlUp).Row 'A列のデータ最終行を求める
If y >= 13 Then '▼有効なデータがあったときのみ、 'コピーする
.Range("A13:L" & y).Copy
CopyTo.PasteSpecial Paste:=xlValues '値のみ貼りつける
Application.CutCopyMode = False
End If
End With
Set WS2 = Nothing
End Sub
|
|