розділити великий excel на менші файли, але включити заголовок у всі файли


1

У мене є макрос, який я використовую для розбиття великих таблиць Excel на більш дрібні файли. Він працює чудово, за винятком того, що він використовує лише заголовок у першому створеному файлі, і цей рядок заголовка (рядок 1) повинен знаходитися у верхній частині кожного нового файлу. Чи є спосіб змінити цей код, щоб якось вставити цей рядок у всі файли?

Sub SplitSheets()

' Save sheet in rows of 25000 to incremental CSV files
' JBeaucaire (7/27/2009)

Dim LR As Long, i As Long, Cntr As Long

Dim ws As Worksheet, OldDir As String

If MsgBox("Is this the sheet to parse data from?", vbYesNo + vbQuestion) = vbNo Then Exit Sub LR = Range("A" & Rows.Count).End(xlUp).row

Set ws = ActiveSheet

OldDir = CurDir     'memorizes the user's current working path

Dim v: v = Evaluate("ISREF(TEMP!A1)")

    If Not v Then
        Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Temp"
    Else
        Sheets("Temp").Activate
        Cells.Clear
    End If

ChDir "C:\Users\BartB\Desktop\sheets"     'path to save CSV file into

    For i = 1 To LR Step 2000
        ws.Rows(i & ":" & i + 1999).Copy Range("A1")
        Cntr = Cntr + 1
        ActiveWorkbook.SaveAs Filename:="File" & Cntr & ".csv", FileFormat:=xlCSV, CreateBackup:=False
        Cells.Clear
    Next i

ChDir OldDir        'restores user's original working path
End Sub

Відповіді:


0

Вам доведеться створити крок у коді. Прямо перед циклом For Next напишіть код жорсткого підключення від першого рядка до першого рядка нового файлу. Після цього просто переконайтеся, що ви починаєте писати з другого рядка. Це досягається зміною рядка "Для i = 2 на крок LR 2000"

    ws.Rows("1:1").Copy Range("A1")
    Cntr = Cntr + 1
    ActiveWorkbook.SaveAs Filename:="File" & Cntr & ".csv", FileFormat:=xlCSV, CreateBackup:=False
    Cells.Clear

For i = 1 To LR Step 2000
    ws.Rows(i & ":" & i + 1999).Copy Range("A1")
    Cntr = Cntr + 1
    ActiveWorkbook.SaveAs Filename:="File" & Cntr & ".csv", FileFormat:=xlCSV, CreateBackup:=False
    Cells.Clear
Next i

Пограйте з цим, але це ідея.


Дякую за відповідь, але це не вийшло. що створює файл із заголовком, але без даних, а потім купу файлів із даними, але не має рядка заголовка. Що мені потрібно - це заголовок у кожному новому файлі. тобто у мене є файл з 20000 імен, адрес, телефонів і т. д. і хочу 10 файлів по 2000 кожен, але кожному потрібен файл заголовка (A1), який має заголовки стовпців для Company_Name, Company_Phone тощо. Я не впевнений, чи VBA здатний впоратися з тим чи ні.
Барт заростає
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.