#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. Исходная книга и пустая книга находятся в одних и тех же папках, и я указал путь в книге, в которой я записал макросы. Теперь, когда я запускаю его, он выдает ошибку подстрочного индекса, я не знаю, почему. Да, это листы, которые я хочу скопировать в пустую книгу.