2017-01-13 3 views
0

Я нашел этот отличный макрос, который копирует каждую из моих строк в моем кадре данных отдельно в новый лист, но также сохраняет первую строку с именами столбцов:Excel. Скопируйте каждую строку в новую книгу, но сохраните имена столбцов. Macro

Sub abc_01() 
Dim WS As Worksheet, newWS As Worksheet 
Dim X As String 
Application.ScreenUpdating = False 
Set WS = Sheets("Sheet1") 
On Error Resume Next 
X = InputBox("number of names 1,2,", , "9") 
For i = 1 To X 
Set newWS = Worksheets.Add(after:=Worksheets(Worksheets.Count)) 
WS.Range("A1:G1").Copy Destination:=newWS.Range("A1") 
WS.Range(WS.Cells(i + 1, "A"), WS.Cells(i + 1, "G")).Copy 
newWS.Range("A2").PasteSpecial xlValues 
Next i 
On Error GoTo 0 
Application.ScreenUpdating = True 
End Sub 

Я попытался теперь скопировать его в новую книгу, а не новый лист, но новая рабочая книга остается пустой, когда я запускаю его. Кроме того, я не спасал новые книги еще в качестве нового файла (в идеале конкретного значения ячейки, если это возможно?)

Sub abc_02() 
Dim thisWB As String 
Dim newWB As String 
thisWB = ActiveWorkbook.Name 
Dim X As String 
Application.ScreenUpdating = False 
Set WS = Sheets("Sheet1") 
On Error Resume Next 
X = InputBox("number of names 1,2,", , "9") 
For i = 1 To X 
Workbooks.Add 
ActiveWorkbook.SaveAs supName 
newWB = ActiveWorkbook.Name 
Windows(thisWB).Activate 
Sheets("Sheet1").Select 
Range("A1:G1").Copy 
Windows(newWB).Activate 
Sheets("Sheet1").Select 
ActiveSheet.Range("A1").Select 
ActiveSheet.Range("A1").Paste 
Windows(thisWB).Activate 
Sheets("Sheet1").Select 
Range(Sheet1.Cells(i + 1, "A"), Sheet1.Cells(i + 1, "G")).Copy 
Windows(newWB).Activate 
Sheets("Sheet1").Select 
Range("A2").PasteSpecial xlValues 
Next i 
On Error GoTo 0 
Application.ScreenUpdating = True 
End Sub 

Я VBA нуб так что любая помощь очень ценится!

ответ

0

В исходном коде, вы имеете

Dim WS As Worksheet, newWS As Worksheet 
Dim X As String 

Dim WS в качестве рабочего листа и newWS, как лист говорит Excel "WS и newWS будут рабочие листы." Позже в коде они устанавливаются соответственно WS как Sheet1 в активной книге, а newWS - как новый рабочий лист в активной книге.

Изменение

Dim thisWB As String 
Dim newWB As String 

в

Dim thisWB As Workbook 
Dim newWB As Workbook 

должен устранить проблему.
Вы должны тушить этотWW и newWB как книги, а не строки.
Excel будет искать строку текста вместо Рабочих книг.

Также - попробуйте найти раздел VBA в ExcelForum.com; Я многое узнал оттуда.

Надеюсь, что поможет

+0

Большое спасибо за помощь Аарон - но, к сожалению, мои новые книги по-прежнему пусты. Шаг «thisWB = Activeworkbook.Name», похоже, не работает, поэтому он никогда не копирует ячейки из оригинальной книги. Есть идеи? – RSesom

Смежные вопросы