Скопировать данные из нескольких книг в одну - VBA

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Понимаю что тема изъезженная, но все же прошу вас помочь. Прочитал несколько топиков и применив на практике не получил результат. Задача следующая: 1. Есть один большой сводный файл (чуть больше 20к строк и 199 столбцов). 2. Есть много мелких файлов (110 штук, потом еще будут добавляться). Структура этих файлов одинаковая. 3. В большом сводном файле под каждый мелкий предусмотрен диапазон ячеек. Структура как в мелких файлах. Все на одном листе ("Лист1"). 4. В большом файле на отдельном листе ("Лист2") расположены исходные данные (пути к файлам). 5. На пользовательскую форму вынесены чекбоксы и кнопки (см. рисунок). 6. Все файлы в двоичном формате, т.е. расширение "*.xlsb". Excel - 2010. При копировании возникает ошибка "Run-time error 9: Subscript out of range". Ошибка возникает в строке 65.
Листинг программы
  1. Private Sub LoadData_Click()
  2. Dim p_string As String
  3. Dim cb_name As String
  4. Dim start_row, i_row As Variant
  5. cb_counter = 0
  6. For i = 1 To 250
  7. If i < 10 Then
  8. If KPForm.MultiPage1.KPTab.Controls("CheckBoxKP00" & i).Value = True Then
  9. cb_counter = cb_counter + 1
  10. Exit For
  11. End If
  12. End If
  13. If i >= 10 And i < 100 Then
  14. If KPForm.MultiPage1.KPTab.Controls("CheckBoxKP0" & i).Value = True Then
  15. cb_counter = cb_counter + 1
  16. Exit For
  17. End If
  18. End If
  19. If i >= 100 Then
  20. If KPForm.MultiPage1.KPTab.Controls("CheckBoxKP" & i).Value = True Then
  21. cb_counter = cb_counter + 1
  22. Exit For
  23. End If
  24. End If
  25. Next i
  26. If cb_counter = 0 Then
  27. MsgBox ("Не выделено ни одной КП." & vbNewLine & "Необходимо выбрать не менее одной КП!")
  28. Exit Sub
  29. End If
  30. check_col = 4
  31. start_row = 57
  32. start_col = 5
  33. awb_name = ThisWorkbook.Name
  34. awb_path = ThisWorkbook.Path
  35. Application.DisplayAlerts = False
  36. Application.ScreenUpdating = False
  37. For i = 1 To 250
  38. If i < 10 Then
  39. cb_name = "CheckBoxKP00" & i
  40. End If
  41. If i >= 10 And i < 100 Then
  42. cb_name = "CheckBoxKP0" & i
  43. End If
  44. If i > 100 Then
  45. cb_name = "CheckBoxKP" & i
  46. End If
  47. kp_i_row = 22
  48. kp_j_col = 5
  49.  
  50. If (KPForm.MultiPage1.KPTab.Controls(cb_name).Enabled = True) And _
  51. (KPForm.MultiPage1.KPTab.Controls(cb_name).Value = True) Then
  52. p_string = Ëèñò2.Cells(i, check_col).Value
  53. Set KPBook = Workbooks.Open(Filename:=p_string, ReadOnly:=True)
  54. kp_name = KPBook.Name
  55. For i_row = start_row To start_row + 5
  56. For j_col = start_col To start_col + 13
  57. Workbooks(awb_name).Worksheets("Лист1").Cells(i_row, j_col).Value = KPBook.Worksheets("Лист1").Cells(kp_i_row, kp_j_col).Value
  58. kp_j_col = kp_j_col + 1
  59. Next j_col
  60. kp_i_row = kp_i_row + 1
  61. Next i_row
  62. KPBook.Close SaveChanges:=False
  63. End If
  64. Select Case i
  65. Case Is = 2
  66. GoTo lbl1
  67. Case Is = 6
  68. GoTo lbl1
  69. Case Is = 216
  70. GoTo lbl1
  71. Case 62 To 65
  72. GoTo lbl1
  73. Case 132 To 199
  74. GoTo lbl1
  75. Case 204 To 208
  76. GoTo lbl1
  77. Case 223 To 250
  78. GoTo lbl1
  79. Case Else
  80. start_row = start_row + 130
  81. End Select
  82. lbl1:
  83. Next i
  84. Application.ScreenUpdating = True
  85. Application.DisplayAlerts = True
  86. MsgBox ("Загрузка завершена!")
  87. End Sub
Может я просто туплю... Но не могу понять почему возникает эта ошибка. Картинку с формой чуть позже добавлю.

Решение задачи: «Скопировать данные из нескольких книг в одну»

textual
Листинг программы
  1. Worksheets("" & i)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы