fork download
  1. Option Explicit
  2.  
  3. Public Sub タスク検索及び転記()
  4. Const SrcFolder As String = "C:\Users\user\Documents\ツール\ダウンロード場所\ファイル名変更場所\"
  5. Const TrgBook As String = "C:\Users\user\Documents\ツール\時間管理シート.xlsx"
  6. Dim srcName As String 'コピー元ブック名
  7. Dim taskName As String 'タスク名
  8. Dim sbk As Workbook 'コピー元ブック
  9. Dim sws As Worksheet 'コピー元シート
  10. Dim tbk As Workbook 'コピー先ブック
  11. Dim tws As Worksheet 'コピー先シート
  12. Dim maxRow As Long '日付(A列)最終行
  13. Dim lastRow As Long '該当タスク列最終行
  14. Dim wrow As Long '作業用行
  15. Dim wcol As Long '作業用列
  16. Dim trgday As Date '本日の日付
  17. Dim trgRow As Long '本日の日付の行
  18. Dim trgCol As Long '本日の日付のタスク対応列
  19. 'コピー元ブック取得
  20. srcName = Dir(SrcFolder & "*.xls")
  21. If Len(srcName) <= 18 Then
  22. MsgBox ("該当ファイルが無いか又はファイル名が短すぎます")
  23. End If
  24. taskName = Left(srcName, Len(srcName) - 18)
  25. 'コピー元 ブック&シート設定
  26. Set sbk = Workbooks.Open(SrcFolder & srcName)
  27. Set sws = sbk.Worksheets("Sheet1")
  28. 'コピー先 ブック&シート設定
  29. Set tbk = Workbooks.Open(TrgBook)
  30. Set tws = tbk.Worksheets("Sheet1")
  31. 'コピー先の行&列を決定する
  32. maxRow = tws.Cells(Rows.Count, "A").End(xlUp).Row
  33. trgday = Date
  34. trgRow = 0
  35. trgCol = 0
  36. '本日の日付検索
  37. For wrow = 1 To maxRow
  38. '本日の日付に一致すれば、その行を記憶する
  39. If trgday = tws.Cells(wrow, "A").Value Then
  40. trgRow = wrow
  41. Exit For
  42. End If
  43. Next
  44. '該当日付なし
  45. If trgRow = 0 Then
  46. MsgBox (trgday & "に該当する日付はありません")
  47. Exit Sub
  48. End If
  49. 'タスクの検索
  50. For wcol = 2 To 4
  51. 'タスクが部分一致すれば、その列を記憶する
  52. If InStr(1, tws.Cells(wrow, wcol).Value, taskName, vbTextCompare) > 0 Then
  53. trgCol = wcol
  54. Exit For
  55. End If
  56. Next
  57. If trgCol = 0 Then
  58. MsgBox (taskName & "が部分一致するタスクはありません")
  59. Exit Sub
  60. End If
  61. '該当列の最終行検索
  62. lastRow = 0
  63. wrow = trgRow + 1
  64. '空きセルが
  65. Do While True
  66. '次の日付に達したら打ち切る
  67. If tws.Cells(wrow, 1).Value <> "" Then Exit Do
  68. '該当タスク列に空きセルが有れば、その行を記憶する
  69. If tws.Cells(wrow, trgCol).Value = "" Then
  70. lastRow = wrow
  71. Exit Do
  72. End If
  73. wrow = wrow + 1
  74. Loop
  75. If lastRow = 0 Then
  76. MsgBox (trgday & "の" & trgCol & "列に空きセルなし")
  77. Exit Sub
  78. End If
  79. sws.Cells(2, 3).Copy tws.Cells(lastRow, trgCol)
  80. tws.Activate
  81. tws.Cells(lastRow, trgCol).Select
  82. MsgBox (lastRow & "行 " & trgCol & "列へコピー完了")
  83. End Sub
  84.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty