Копировать листы после определенного листа в отдельные файлы - PullRequest
1 голос
/ 08 июля 2019

Я хочу разбить мой файл на отдельные файлы, которые будут скопированы по тому же пути.Макрос VBA должен разделить все листы.Макрос должен начинаться с первого листа после определенного листа (например, «Тест»).

Я пытаюсь найти решение, чтобы определить лист для начала, но безуспешно.

Sub Splitbook()
    Dim xPath As String
    xPath = Application.ActiveWorkbook.Path
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    For Each xWs In ThisWorkbook.Sheets
        xWs.Copy
        Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name & ".xlsx"
        Application.ActiveWorkbook.Close False
    Next
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Используйте Worksheet.Index, чтобы определить листы для копирования, что-то вроде этого:

Option Explicit

Sub Splitbook()
    Dim xPath As String
    xPath = ThisWorkbook.Path

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Dim i As Long

    With ThisWorkbook
        For i = .Worksheets("Test").Index + 1 To .Worksheets.Count
            .Worksheets(i).Copy
            Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & .Worksheets(i).Name & ".xlsx"
            Application.ActiveWorkbook.Close False
        Next
    End With

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
0 голосов
/ 08 июля 2019

Есть функция worksheet.index. Введите имя своего рабочего листа, получите его индекс, а затем возьмите только те индексы, которые больше того, с которого вы хотите начать.

dim wks as worksheet
dim startindex as integer
startindex = 0
for each wks in thisworkbook.worksheets
    if wks.name = "targetsheet" then
        startindex = wks.index
    end if
    if not startindex = 0 then
        if wks.index > startindex then
            'do some stuff
        end if
    end if
next

Понятия не имею, что произойдет, если вы постоянно меняете порядок листов.

Edit: Это был простой тест, он сразу же переиндексирует при перемещении, поэтому убедитесь, что они в правильном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...