Объединине файлов в один с определнной строки - VBA

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

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

Доброго дня всем! Интересует вопрос можно ли по средством макроса объединить файлы в один. (пример вложил) Кол-во файлов более 50, лист всегда первый. Помогите плизз.

Решение задачи: «Объединине файлов в один с определнной строки»

textual
Листинг программы
  1. Sub Сращение()
  2. Dim oFSO As Object
  3. Dim oFolder As Object
  4. Dim oFile As Object
  5. Dim sFolderName, sName, sFullName, sFileName As String
  6. Dim oWB As Workbook
  7. Set oWB = ActiveWorkbook
  8. sName = oWB.Name
  9. sFullName = oWB.FullName
  10. sFolderName = Replace(sFullName, sName, "")
  11. Set oFSO = CreateObject("Scripting.FileSystemObject")
  12. Set oFolder = oFSO.GetFolder(sFolderName)
  13.     For Each oFile In oFolder.Files
  14.     sFileName = oFile.Name
  15.         If Not sFileName = sName And Not InStr(sFileName, "$") >= 1 And InStr(sFileName, "xls") >= 1 Then
  16.             Call ApplicationOne(sFileName, sFolderName)
  17.         End If
  18.     Next oFile
  19. oWB.Close SaveChanges:=wbSaveChanges
  20. End Sub
  21. Private Sub ApplicationOne(ByVal sFileName As String, ByVal sFolderName As String)
  22. Dim oWB As Workbook
  23. Dim oWBN As Workbook
  24. Dim oList As Worksheet
  25. Dim oListNew As Worksheet
  26. Set oWB = ActiveWorkbook
  27. Set oList = oWB.Sheets("Лист1") 'это имя листа
  28. Set oWBNew = Workbooks.Open(Filename:=sFolderName & sFileName)
  29. Set oListNew = oWBNew.Sheets("Лист1") 'Это имя листа открытой книги
  30. oList.Activate
  31. Dim lRange As Long
  32.     lRange = LastRowFind(oList)
  33.     lRange = lRange + 1
  34.     oListNew.Activate
  35. Dim lRangeNew As Long
  36. Dim iFirstNew As Integer
  37. Dim sText As String
  38.     sText = "Столбец1" 'Это заголовок столбца
  39.    iFirstNew = Columns("A:A").Find(What:=sText).Row
  40.     lRangeNew = LastRowFind(oListNew)
  41. Range("A" & iFirstNew & ":" & "G" & lRangeNew).Select
  42. Selection.Copy
  43. oList.Activate
  44. oList.Rows(lRange).PasteSpecial
  45. 'oWBNew.Close SaveChanges:=wdDoNotSaveChanges
  46. End Sub
  47. Private Function LastRowFind(ByVal wList As Worksheet)
  48. Dim lRange As Long
  49. Dim iFirst As Integer
  50. lRange = Range("A" & Rows.Count).End(xlUp).Row
  51. lRange = lRange - Not IsEmpty(Range("A" & lRange))
  52. LastRowFind = lRange - 1
  53. End Function

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


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

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

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

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

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

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