Добавил обработку первого файла, обработку ошибок включил, дальше по аналогии добавьте сами, писать много (ищите по " 'добавлено" и " 'добавлено условие"):
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228.
Private Sub CommandButton1_Click()
Dim dFirstDate As Date 'объявление переменных
Dim dLastDate As Date
Dim dDate As Date
Dim iDay As Integer
Dim iMonthNum As Integer
Dim iYear As Integer
Dim iTempY As Integer
Dim iTempM As Integer
Dim j As Integer
Dim k As Integer
Dim q As Integer
Dim h As Integer
Dim iTempD As Integer
Dim t As Integer
Dim s As Integer
Dim sMonthName As String
Dim wb As Workbook
Dim OPS As Workbook
Dim wbRef As Workbook
Dim wbDaily As Workbook
Dim wbRefDaily As Workbook
Dim wbCps As Workbook
Dim wbCrush As Workbook
Dim wbReestr As Workbook
Dim wbBottl As Workbook
Dim wbHulls As Workbook
dFirstDate = ActiveWorkbook.Worksheets("Week Summary").Range("C7").Value 'определяем дату начала недели
dLastDate = ActiveWorkbook.Worksheets("Week Summary").Range("W7").Value 'определяем дату конца недели
Set OPS = ThisWorkbook
'определяем, введена ли начальная и конечная даты недели
If IsEmpty(ActiveWorkbook.Worksheets("Week Summary").Range("C7")) Then
MsgBox ("Введите дату начала недели в листе Week Summary")
ElseIf IsEmpty(ActiveWorkbook.Worksheets("Week Summary").Range("W7")) Then
MsgBox ("Введите дату конца недели в листе Week Summary")
Else
iTempY = 0 'временная переменная для определения года
iTempM = 0 'временная переменная для определения месяца
For dDate = dFirstDate To dLastDate
iMonthNum = DatePart("m", dDate) 'определение номера месяца
iDay = DatePart("d", dDate) 'определение номера дня
iYear = DatePart("yyyy", dDate) 'определение номера года
sMonthName = fGetMonthName(iMonthNum) 'вызов функции, которая возвращает название месяца по его номеру
Application.ScreenUpdating = False 'запрет обновления экрана
'проверка, соответствует ли начальный год и месяц текущему
If (iTempY <> iYear) Or (iTempM <> iMonthNum) Then
On Error Resume Next ' временно меняем обработку ошибок на это
wbNotOpen = 0 'добавлено
Set wb = Workbooks.Open("\\Shared Projects\Operations Reports\QC Reports - Crush & Seeds\" & iYear & "\QC Crush " & sMonthName & ".xls", False)
If Not wb Is Nothing Then 'если файл открылся, то дальнейшее пропускаем 'добавлено условие
Else 'иначе
ChDir "\\Shared Projects\Operations Reports\QC Reports - Crush & Seeds\" & iYear & "\" 'чтоб меньше перебирать
openxls = Application _
.GetOpenFilename("QC Crush****.xls, *.xls", , "QC Crush****.xls", , False)
If openxls <> False Then
Set wb = Workbooks.Open(Filename:=openxls, ReadOnly:=False)
Else
wbNotOpen = 1 'если юзер отказался выбирать файл, обработать флаг далее в коде
End If
End If
Set wbRef = Workbooks.Open("\\Shared Projects\Operations Reports\QC Reports - Refinery & Bottling\" & iYear & "\QC Report Refinery " & sMonthName & ".xls", False)
Set wbCps = Workbooks.Open("\\Shared Projects\Reports\Silos_Shifts\Season 2009\ЦПС-общий учет.xls", False)
Set wbReestr = Workbooks.Open("\\Shared Projects\Reports\Silos_Shifts\Season 2009\Реестр отходов.xls", False)
Set wbBottl = Workbooks.Open("\\Shared Projects\Operations Reports\Weekly Plant Report\" & iYear & "\BOTTLING - СМЕННЫЕ ЖУРНАЛЫ\KEP_Bottling - сменный журнал " & sMonthName & ".xls", False)
Set wbHulls = Workbooks.Open("\\Shared Projects\Operations Reports\Energy supplies\" & iYear & "\Gas & Hulls.xls", False)
On Error GoTo ErrHandler
iTempY = iYear 'присваиваем временную переменную текущему значению года
iTempM = iMonthNum 'присваиваем временную переменную текущему значению месяца
End If
'копирование нужных значений ячеек из файла QC Crush
If wbNotOpen <> 1 Then 'добавлено условие
For i = 1 To wb.Worksheets("Crush").UsedRange.Rows.Count
If wb.Worksheets.Item("Crush").Cells(i, 4 ).Value = iDay Then
If wb.Worksheets.Item("Crush").Cells(i, 5 ).Value = ("Д1 Массовая доля сора,%") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 30 , 20 + (dDate - dFirstDate)).Value = wb.Worksheets.Item("Crush").Cells(i, 32 ).Value
ElseIf wb.Worksheets.Item("Crush").Cells(i, 5 ).Value = ("Д1 Массовая доля влаги,%") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 31 , 20 + (dDate - dFirstDate)).Value = wb.Worksheets.Item("Crush").Cells(i, 32 ).Value
ElseIf wb.Worksheets.Item("Crush").Cells(i, 5 ).Value = ("Д1 Массовая доля масла M0, %") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 32 , 20 + (dDate - dFirstDate)).Value = wb.Worksheets.Item("Crush").Cells(i, 32 ).Value
ElseIf wb.Worksheets.Item("Crush").Cells(i, 5 ).Value = ("Д1 Лузжистость при факт.влажности и сорности Л0,%") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 35 , 20 + (dDate - dFirstDate)).Value = wb.Worksheets.Item("Crush").Cells(i, 32 ).Value
ElseIf wb.Worksheets.Item("Crush").Cells(i, 5 ).Value = ("Д3Л Вынос ядра,%") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 37 , 20 + (dDate - dFirstDate)).Value = wb.Worksheets.Item("Crush").Cells(i, 32 ).Value
ElseIf wb.Worksheets.Item("Crush").Cells(i, 5 ).Value = ("Д7 Протеин, %") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 38 , 20 + (dDate - dFirstDate)).Value = wb.Worksheets.Item("Crush").Cells(i, 32 ).Value
ElseIf wb.Worksheets.Item("Crush").Cells(i, 5 ).Value = ("Д7 Массовая доля влаги, %") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 39 , 20 + (dDate - dFirstDate)).Value = wb.Worksheets.Item("Crush").Cells(i, 32 ).Value
ElseIf wb.Worksheets.Item("Crush").Cells(i, 5 ).Value = ("Д7 Массовая доля масла,%") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 40 , 20 + (dDate - dFirstDate)).Value = wb.Worksheets.Item("Crush").Cells(i, 32 ).Value
ElseIf wb.Worksheets.Item("Crush").Cells(i, 5 ).Value = ("Д3Л Массовая доля масла,%") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 41 , 20 + (dDate - dFirstDate)).Value = wb.Worksheets.Item("Crush").Cells(i, 32 ).Value
End If
End If
Next i
End If 'добавлено условие
'копирование нужных значений ячеек из файла QC Refinery
For j = 1 To wbRef.Worksheets("Flows in Process").UsedRange.Rows.Count
If wbRef.Worksheets.Item("Flows in Process").Cells(j, 4 ).Value = iDay Then
If wbRef.Worksheets.Item("Flows in Process").Cells(j, 6 ).Value = ("P10 Deodorised Oil Cold Test 1hr") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 44 , 20 + (dDate - dFirstDate)).Value = wbRef.Worksheets.Item("Flows in Process").Cells(j, 34 ).Value
ElseIf wbRef.Worksheets.Item("Flows in Process").Cells(j, 6 ).Value = ("P10 Deodorised Oil Acid Value") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 45 , 20 + (dDate - dFirstDate)).Value = wbRef.Worksheets.Item("Flows in Process").Cells(j, 34 ).Value
ElseIf wbRef.Worksheets.Item("Flows in Process").Cells(j, 6 ).Value = ("P10 Deodorised Oil Peroxide Value") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 47 , 20 + (dDate - dFirstDate)).Value = wbRef.Worksheets.Item("Flows in Process").Cells(j, 34 ).Value
ElseIf wbRef.Worksheets.Item("Flows in Process").Cells(j, 6 ).Value = ("P1 Crude Oil Phosphorus (%)") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 48 , 20 + (dDate - dFirstDate)).Value = wbRef.Worksheets.Item("Flows in Process").Cells(j, 34 ).Value
ElseIf wbRef.Worksheets.Item("Flows in Process").Cells(j, 6 ).Value = ("P10 Deodorised Oil Phosphorus (%)") Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 49 , 20 + (dDate - dFirstDate)).Value = wbRef.Worksheets.Item("Flows in Process").Cells(j, 34 ).Value
End If
End If
Next j
'копирование нужных значений ячеек из файлов Daily Report Crush & Silos за все числа месяца
For iTempD = 0 To iDay
iTempD = iDay
Set wbDaily = Workbooks.Open("\\Shared Projects\Operations Reports\Production Reports - Crush & Seeds\Daily Report Crush & Silos\Daily Report Crush & Silos " & sMonthName & " " & iYear & "\Daily Report Crush & Silos " & sMonthName & " " & iTempD & ".xls", False)
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 10 , 20 + (dDate - dFirstDate)).Value = wbDaily.Worksheets.Item("QA Seeds").Cells( 87 , 3 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 11 , 20 + (dDate - dFirstDate)).Value = wbDaily.Worksheets.Item("QA Seeds").Cells( 88 , 3 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 12 , 20 + (dDate - dFirstDate)).Value = wbDaily.Worksheets.Item("QA Seeds").Cells( 89 , 3 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 13 , 20 + (dDate - dFirstDate)).Value = wbDaily.Worksheets.Item("QA Seeds").Cells( 90 , 3 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 14 , 20 + (dDate - dFirstDate)).Value = wbDaily.Worksheets.Item("QA Seeds").Cells( 91 , 3 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 33 , 20 + (dDate - dFirstDate)).Value = wbDaily.Worksheets.Item("QA Seeds").Cells( 92 , 3 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 34 , 20 + (dDate - dFirstDate)).Value = wbDaily.Worksheets.Item("QA Seeds").Cells( 93 , 3 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 34 , 9 + (dDate - dFirstDate)).Value = wbDaily.Worksheets.Item("Сводная").Cells( 49 , 11 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 35 , 9 + (dDate - dFirstDate)).Value = wbDaily.Worksheets.Item("Сводная").Cells( 51 , 11 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 38 , 9 + (dDate - dFirstDate)).Value = wbDaily.Worksheets.Item("Сводная").Cells( 53 , 11 ).Value
wbDaily.Close
'копирование необходимых ячеек из файлов Daily Report Refinery & Bottling за каждый день
Set wbRefDaily = Workbooks.Open("\\Shared Projects\Operations Reports\Production Reports - Refinery & Bottling\" & iYear & "\Production Report Refinery & Bottling " & sMonthName & " " & iYear & "\Daily Report Refinery & Bottling " & sMonthName & " " & iTempD & ".xls", False)
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 17 , 9 + (dDate - dFirstDate)).Value = wbRefDaily.Worksheets.Item("Сводная").Cells( 149 , 11 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 21 , 9 + (dDate - dFirstDate)).Value = wbRefDaily.Worksheets.Item("Сводная").Cells( 153 , 11 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 22 , 9 + (dDate - dFirstDate)).Value = wbRefDaily.Worksheets.Item("Сводная").Cells( 238 , 11 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 45 , 9 + (dDate - dFirstDate)).Value = wbRefDaily.Worksheets.Item("Сводная").Cells( 30 , 11 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 46 , 9 + (dDate - dFirstDate)).Value = wbRefDaily.Worksheets.Item("Сводная").Cells( 96 , 11 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 47 , 9 + (dDate - dFirstDate)).Value = wbRefDaily.Worksheets.Item("Сводная").Cells( 97 , 11 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 49 , 9 + (dDate - dFirstDate)).Value = wbRefDaily.Worksheets.Item("Сводная").Cells( 71 , 11 ).Value
wbRefDaily.Close
'копирование данных из файла Daily Report Crushing&Handling
Set wbCrush = Workbooks.Open("\\Shared Projects\Operations Reports\Production Reports - Crush & Seeds\SHIFTS Производственный отчет ПДМ-" & iYear & "\" & sMonthName & "\Daily Report Crushing&Handling " & sMonthName & " " & iTempD & ".xls", False)
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 41 , 9 + (dDate - dFirstDate)).Value = wbCrush.Worksheets.Item("Отчет").Cells( 9 , 10 ).Value
wbCrush.Close
Next iTempD
'копирование данных из файла ЦПС-общий учет (по семечке)
For k = 1 To wbCps.Worksheets("Проверка семечка").UsedRange.Rows.Count
If wbCps.Worksheets.Item("Проверка семечка").Cells(k, 1 ).Value = dDate And wbCps.Worksheets.Item("Проверка семечка").Cells(k + 1 , 1 ).Value = dDate Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 12 , 9 + (dDate - dFirstDate)).Value = wbCps.Worksheets.Item("Проверка семечка").Cells(k, 5 ).Value + wbCps.Worksheets.Item("Проверка семечка").Cells(k + 1 , 5 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 13 , 9 + (dDate - dFirstDate)).Value = wbCps.Worksheets.Item("Проверка семечка").Cells(k, 6 ).Value + wbCps.Worksheets.Item("Проверка семечка").Cells(k + 1 , 6 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 14 , 9 + (dDate - dFirstDate)).Value = wbCps.Worksheets.Item("Проверка семечка").Cells(k + 1 , 9 ).Value
End If
Next k
'копирование данных из файла ЦПС-общий учет (по шроту)
For q = 1 To wbCps.Worksheets("Проверка шрота").UsedRange.Rows.Count
If wbCps.Worksheets.Item("Проверка шрота").Cells(q, 1 ).Value = dDate And wbCps.Worksheets.Item("Проверка шрота").Cells(q + 1 , 1 ).Value = dDate Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 28 , 9 + (dDate - dFirstDate)).Value = wbCps.Worksheets.Item("Проверка шрота").Cells(q, 6 ).Value + wbCps.Worksheets.Item("Проверка шрота").Cells(q + 1 , 6 ).Value
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 29 , 9 + (dDate - dFirstDate)).Value = wbCps.Worksheets.Item("Проверка шрота").Cells(q + 1 , 7 ).Value
End If
Next q
'копирование данных из файла Реестр отходов
R = 0
For h = 1 To wbReestr.Worksheets("2009-2010").UsedRange.Rows.Count
If wbReestr.Worksheets.Item("2009-2010").Cells(h, 2 ).Value = dDate And wbReestr.Worksheets.Item("2009-2010").Cells(h, 4 ).Value = ("Лузга") Then
R = R + wbReestr.Worksheets.Item("2009-2010").Cells(h, 8 ).Value
End If
Next h
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 42 , 9 + (dDate - dFirstDate)).Value = R
'копирование данных из папки Bottling сменные журналы
For t = 1 To wbBottl.Worksheets("Лист1").UsedRange.Columns.Count
If wbBottl.Worksheets("Лист1").Cells( 1 , t).Value = iDay And wbBottl.Worksheets("Лист1").Cells( 1 , t + 1 ).Value = iDay Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 52 , 9 + (dDate - dFirstDate)).Value = wbBottl.Worksheets("Лист1").Cells( 72 , t + 1 ).Value
End If
Next t
'копирование данных из файла Gas & Hulls
For s = 1 To wbHulls.Worksheets("Потребление сменное").UsedRange.Rows.Count
If wbHulls.Worksheets("Потребление сменное").Cells(s, 3 ) = dDate Then
OPS.Worksheets.Item("Data input Volumes & Quality").Cells( 43 , 9 + (dDate - dFirstDate)).Value = wbHulls.Worksheets("Потребление сменное").Cells(s, 10 ).Value + wbHulls.Worksheets("Потребление сменное").Cells(s + 1 , 10 ).Value
End If
Next s
Next dDate
wb.Close
wbRef.Close
wbCps.Close (False)
wbReestr.Close
wbBottl.Close
wbHulls.Close
End If
ExitHandler:
Application.ScreenUpdating = True 'разрешение обновления экрана (чтобы видеть внесенные изменения)
Exit Sub
ErrHandler:
MsgBox Err.Description
Resume ExitHandler
End Sub
Если решите при отказе юзера выбрать файл выходить из кода, тогда флаги не нужны вообще (и ниже по коду условие проверки флага тоже), а вместо
1.
wbNotOpen = 1 'если юзер отказался выбирать файл, обработать флаг далее в коде
пишем
|