fork download
  1. Option Explicit
  2. Public Sub ファイル統合()
  3. Const Folder1 As String = "d:\goo\data7\temp" '契約管理表格納フォルダ
  4. Const Folder2 As String = "d:\goo\data7" '顧客データ格納フォルダ
  5. Dim today As Date '本日
  6. Dim wdate As Date
  7. Dim i As Long
  8. Dim sbname(2) As String '過去3箇月のブック名
  9. Dim tbname As String '契約管理表(該当月)ブック名
  10. Dim msg As String
  11. Dim wb1 As Workbook '契約管理表(該当月)
  12. Dim wb2 As Workbook '顧客データ
  13. Dim sh1 As Worksheet '契約管理表 Sheet1
  14. Dim sh2 As Worksheet '顧客データ Sheet1
  15. Dim maxrow1 As Long '契約管理表 Sheet1 最大行
  16. Dim maxrow2 As Long '顧客データ Sheet1 最大行
  17. Dim row1 As Long '契約管理表 Sheet1 行番号
  18. Dim row2 As Long '顧客データ Sheet1 行番号
  19. today = Date
  20. tbname = Month(today) & "月契約管理表"
  21. msg = ""
  22. For i = 0 To 2
  23. wdate = DateAdd("m", (i - 3), today)
  24. sbname(i) = "顧客データ(" & Year(wdate) & "年" & Month(wdate) & "月分)"
  25. msg = msg & vbLf & sbname(i)
  26. Next
  27. msg = msg & vbLf & "を" & vbLf & tbname & vbLf & "にまとめます"
  28. If MsgBox(msg, vbOKCancel) <> vbOK Then Exit Sub
  29. Set wb1 = Workbooks.Open(Folder1 & "\" & tbname & ".xlsx")
  30. Set sh1 = wb1.Worksheets("Sheet1")
  31. maxrow1 = sh1.Cells(Rows.Count, "B").End(xlUp).Row 'B列の最大行取得
  32. If maxrow1 > 1 Then
  33. sh1.Range("B2:C" & maxrow1).ClearContents
  34. End If
  35. row1 = 2
  36. '過去3か月分を集計
  37. For i = 0 To 2
  38. Set wb2 = Workbooks.Open(Folder2 & "\" & sbname(i) & ".xlsx")
  39. Set sh2 = wb2.Worksheets("Sheet1")
  40. maxrow2 = sh2.Cells(Rows.Count, "A").End(xlUp).Row 'A列の最大行取得
  41. For row2 = 2 To maxrow2
  42. 'B~AL列へA~AK列を転送
  43. sh1.Cells(row1, "B").Resize(, 37).Value = sh2.Cells(row2, "A").Resize(, 37).Value
  44. row1 = row1 + 1
  45. Next
  46. wb2.Saved = True
  47. wb2.Close
  48. Next
  49. 'ソート
  50. If row1 > 2 Then
  51. sh1.Range("B2:AL" & row1 - 1).Sort key1:=Range("B2"), Order1:=xlAscending, key2:=Range("C2"), Order1:=xlAscending, Header:=xlNo
  52. End If
  53. wb1.Save
  54. wb1.Close
  55. MsgBox ("完了")
  56. End Sub
  57.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty