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

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

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

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

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

textual
Листинг программы
Sub Сращение()
Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object
Dim sFolderName, sName, sFullName, sFileName As String
Dim oWB As Workbook
Set oWB = ActiveWorkbook
sName = oWB.Name
sFullName = oWB.FullName
sFolderName = Replace(sFullName, sName, "")
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sFolderName)
    For Each oFile In oFolder.Files
    sFileName = oFile.Name
        If Not sFileName = sName And Not InStr(sFileName, "$") >= 1 And InStr(sFileName, "xls") >= 1 Then
            Call ApplicationOne(sFileName, sFolderName)
        End If
    Next oFile
oWB.Close SaveChanges:=wbSaveChanges
End Sub
Private Sub ApplicationOne(ByVal sFileName As String, ByVal sFolderName As String)
Dim oWB As Workbook
Dim oWBN As Workbook
Dim oList As Worksheet
Dim oListNew As Worksheet
Set oWB = ActiveWorkbook
Set oList = oWB.Sheets("Лист1") 'это имя листа
Set oWBNew = Workbooks.Open(Filename:=sFolderName & sFileName)
Set oListNew = oWBNew.Sheets("Лист1") 'Это имя листа открытой книги
oList.Activate
Dim lRange As Long
    lRange = LastRowFind(oList)
    lRange = lRange + 1
    oListNew.Activate
Dim lRangeNew As Long
Dim iFirstNew As Integer
Dim sText As String
    sText = "Столбец1" 'Это заголовок столбца
    iFirstNew = Columns("A:A").Find(What:=sText).Row
    lRangeNew = LastRowFind(oListNew)
Range("A" & iFirstNew & ":" & "G" & lRangeNew).Select
Selection.Copy
oList.Activate
oList.Rows(lRange).PasteSpecial
'oWBNew.Close SaveChanges:=wdDoNotSaveChanges
End Sub
Private Function LastRowFind(ByVal wList As Worksheet)
Dim lRange As Long
Dim iFirst As Integer
lRange = Range("A" & Rows.Count).End(xlUp).Row
lRange = lRange - Not IsEmpty(Range("A" & lRange))
LastRowFind = lRange - 1
End Function

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


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

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

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