Как скопировать / вставить данные и удалить листы, а затем сохранить как?

#excel #vba #copy-paste #worksheet

#excel #vba #копировать-вставить #рабочий лист

Вопрос:

Я пытаюсь написать макросы, но возникают трудности. Каждый месяц я получаю файл, для которого я должен выполнить определенные задачи по копированию данных и вставке в качестве значений и для удаления определенных листов. Но основная часть заключается в том, что каждый месяц имя файла будет меняться, поэтому я пытаюсь поместить эти макросы в другую пустую книгу, которая откроет конкретную книгу и выполнит задачу, и после завершения задач она сохранит этот файл как новый файл Excel. Nomefile — это ячейка, содержащая имя книги, которую необходимо открыть.

 Sub PasteSpecial_Values()

nomefile = (dati(j, 1) amp; "" amp; dati(j, 2))
Workbooks.Open Filename:=nomefile

Worksheets("SC Global Overview").Range("A1:F80").Copy
Worksheets("SC Global Overview").Range("A1:F80").PasteSpecial Paste:=xlPasteValues

Worksheets("GL_EU").Range("A1:J100").Copy
Worksheets("GL_EU").Range("A1:J100").PasteSpecial Paste:=xlPasteValues

Worksheets("GL_APAC").Range("A1:J100").Copy
Worksheets("GL_APAC").Range("A1:J100").PasteSpecial Paste:=xlPasteValues

Worksheets("GL_SAM amp; NAM").Range("A1:J100").Copy
Worksheets("GL_SAM amp; NAM").Range("A1:J100").PasteSpecial Paste:=xlPasteValues

Worksheets("SC Europe Overview").Range("A1:F80").Copy
Worksheets("SC Europe Overview").Range("A1:F80").PasteSpecial Paste:=xlPasteValues

Worksheets("REG_EU").Range("A1:J100").Copy
Worksheets("REG_EU").Range("A1:J100").PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

End Sub
Sub SheetKiller()
Dim s As Worksheet, t As String
Dim i As Long, K As Long
K = Sheets.Count

For i = K To 1 Step -1
    t = Sheets(i).Name
    If t = "Check combinations" Or t = "Measures" Or t = "GL_Target" Or t = "Parameters" Or t = "Data" Or t = "Pivot data initiative" Or t = "Pivot data substream" Or t = "Pivot data" Or t = "Pivot check names" Or t = "Pivot check region" Then
        Application.DisplayAlerts = False
            Sheets(i).Delete
        Application.DisplayAlerts = True
    End If
Next i

ThisWorkbook.SaveAs Filename:=WaveReporting, Format:=xlOpenXMLWorkbook

End Sub
  

Может кто-нибудь, пожалуйста, помочь, и будет хорошо, если мы сможем преобразовать его в один макрос, а не в 2?

С уважением.

Комментарии:

1. В чем вопрос? Ваш код выглядит нормально (я предполагаю, что dati() это не английский для Cells() , но это допустимая функция), вы просто хотите запустить SheetKiller после завершения копирования? (К вашему сведению, вы можете кататься на лыжах .Copy / .Paste , просто установив диапазоны равными друг другу, например, Range([Destination Range]).Value = Range([origin data range]).Value итак, один пример из приведенных выше, Worksheets("SC Global Overview").Range("A1:F80").Value = Worksheets("SC Global Overview").Range("A1:F80")..Value но обратите внимание, что вы никогда не объявляете WaveReporting в SubKiller подразделе.

2. Это код, который вы пишете, чтобы открыть новую книгу и скопировать диапазоны с каждого листа в новую книгу?

3. если вы хотите начать с пустой книги, откуда вы берете nomefile имя?

4. Это 6 листов, «Глобальный обзор SC», «GL_EU» и т.д. единственные листы, которые вы хотите скопировать из ежемесячной книги в пустую книгу?

5. Исходная книга и пустая книга находятся в одних и тех же папках, и я указал путь в книге, в которой я записал макросы. Теперь, когда я запускаю его, он выдает ошибку подстрочного индекса, я не знаю, почему. Да, это листы, которые я хочу скопировать в пустую книгу.