Всем добрый день!
Недавно я взял с вашего форума классный скрипт, который фильтрует один файл по колонке и на основе фильтрации создает несколько файлов и сохраняет их. Как к этому скрипту добавить чтобы он в каждый файл вставлял первую строчку с основного файла в каждый следующий (отфильтрованный файл)
Недавно я взял с вашего форума классный скрипт, который фильтрует один файл по колонке и на основе фильтрации создает несколько файлов и сохраняет их. Как к этому скрипту добавить чтобы он в каждый файл вставлял первую строчку с основного файла в каждый следующий (отфильтрованный файл)
| Код |
|---|
Option Explicit
Sub copyu()
Dim oDic As Object, oFSO As Object
Dim arrData(), arrSeparateItems(), arrTemp()
Dim TempWb As Workbook
Dim sFolderPath As String, sFullFileName As String
Dim LastRow As Long, i As Long, n As Long, c As Long, r As Long
If MsgBox(?????", vbQuestion + vbYesNo, "Разбивка") = vbNo Then Exit Sub
sFolderPath = "https://mhpo365.sharepoint.com"
If sFolderPath = vbNullString Then Exit Sub
If Right(sFolderPath, 1) <> Application.PathSeparator Then sFolderPath = sFolderPath & Application.PathSeparator
Application.ScreenUpdating = False
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oDic = CreateObject("Scripting.Dictionary")
With ActiveSheet
If .FilterMode = True Then .ShowAllData
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
arrData = .Range("A2:AB" & LastRow).Value
End With
For i = 1 To UBound(arrData)
If Not oDic.Exists(arrData(i, 1)) Then oDic.Add arrData(i, 1), 0&
Next i
arrSeparateItems() = oDic.Keys
For n = LBound(arrSeparateItems) To UBound(arrSeparateItems)
ReDim arrTemp(1 To UBound(arrData), 1 To UBound(arrData, 2))
r = 0
For i = LBound(arrData) To UBound(arrData)
If arrData(i, 1) = arrSeparateItems(n) Then
r = r + 1
For c = LBound(arrData, 2) To UBound(arrData, 2)
arrTemp(r, c) = arrData(i, c)
Next c
End If
Next i
Set TempWb = Workbooks.Add
With TempWb.Worksheets(1)
.Range("A1").Resize(1, UBound(arrData, 2)).Value = arrData
.Range("A2").Resize(UBound(arrTemp), UBound(arrTemp, 2)).Value = arrTemp
.Columns("A:Z").AutoFit
End With
sFullFileName = sFolderPath & arrSeparateItems(n) & ".xlsx"
If oFSO.FileExists(sFullFileName) Then oFSO.Deletefile (sFullFileName)
TempWb.SaveAs sFullFileName, FileFormat:=51 'XLSX
TempWb.Close SaveChanges:=False
Next n
Application.ScreenUpdating = True
MsgBox "???? " & sFolderPath, vbInformation
End Sub
|
Изменено: - 13.02.2023 11:24:59