2013-07-23 2 views
0

У меня есть две отдельные книги, одна из которых называется ActiveWorkbook и одна из них с названием Terminated Workbook. Я хочу создать кнопку копирования в ActiveWorkbook - Templatesheet, которая спросит пользователя, какой лист скопировать и скопировать в TerminatedWokbook и назвал то же самое, что и оригинал.Как я могу скопировать один рабочий лист в одной книге в другую книгу

У меня есть такой код, как этот, и так как я очень новичок в Excel, поэтому он не работает. Благодаря

Sub CopytoTernimal() 
Dim CopyName As String 
CopyName = InputBox("Please enter the name of sheet which will copy to ternimal") 

Sheets("CopyName").Copy 
Before:=Workbooks("Terminated Employees").Sheets(1) 

End Sub 
+0

Поскольку CopyName является var, а не строкой, используйте 'Sheets (CopyName)' без кавычек. И поместите это 'Before' в ту же строку команды' Copy'. –

+0

Спасибо, но я получаю сообщение об ошибке «Subcript out the range» на линии копирования –

+0

Я считаю, что проблема 'before' является проблемой. Убедитесь, что CopyName существует, и попробуйте без него. –

ответ

2

Хорошо, вот полный код

Dim CopyName As String 
CopyName = InputBox("Please enter the name of sheet which will copy to ternimal") 

Dim thisSheet As Worksheet 

'you must be sure CopyName is typed correctly, or it wont find the sheet 
'also be sure the Activeworkbook name is correctly typed. 
Set thisSheet = Workbooks("ActiveWorkbook").Worksheets(CopyName) 

'copy this sheet 
thisSheet.Rows.Copy 

Dim NewSheet As Worksheet 
Set NewSheet = Workbooks("Terminated Employees").Worksheets.Add() 
NewSheet.Name = thisSheet.Name 
NewSheet.Paste 

Чтобы сделать кнопку, перейдите в главное окно Excel, закладки для разработчиков, и вставить Active X Button. (Используйте Активную книгу) Затем в design mode дважды щелкните эту кнопку. click event будет автоматически сгенерирован, поэтому вы помещаете этот код в этот суб. После этого отключите design mode (также на вкладке разработчика в главном окне). Когда вы нажимаете кнопку, вызывается код.

+0

Спасибо, но не нравится строка «NewSheet.Paste()» –

+0

Вот и полный код. –

+0

Большое спасибо. Я все еще получаю сообщение об ошибке «Set thisSheet = Workbooks» («VacSicLog.xlsm»). Рабочие листы (CopyName). Должен ли я указать полное имя рабочего листа, в котором содержится .xlsm, и должна быть открыта обе рабочая книга. Я прошу прощения. Я каждый новичок в Excel –

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