Я совершенно новый, чтобы преуспеть в макросах VBA, поэтому моя проблема должна быть легко решена.Копирование рабочих листов из одной книги в другую
Я пытаюсь открыть все файлы в одной папке, немного отредактировать эти файлы и скопировать их в существующую книгу. К сожалению, ошибка времени выполнения «424»: требуется объект.
Выделено находится ряд:
ActiveSheets.Copy После того, как: = Workbooks ("Macro sheets.xlsm") Sheets (Sheets.Count)
Похоже, "Макро sheets.xlsm", не делает. существует, но это имя рабочей книги, из которой я запускаю этот макрос.
Я прошел через многие форумы, пробовал много кодов, но до сих пор не нашел решения.
Пожалуйста, помогите мне?
Спасибо большое,
Jan
Sub nahranidat()
Dim YourFile As Variant
Dim YourFolderPath As Variant
YourFolderPath = "K:\MMR\2015\BO\macro files connection\"
ChDir YourFolderPath
YourFile = Dir(YourFolderPath & "*.*")
Do While YourFile <> ""
Workbooks.Open Filename:=YourFolderPath & YourFile
YourFile = Dir
Set myObject = ActiveWindow
If Activeworkbook.Worksheets.Count = 2 Then
Sheets(1).Select
ActiveSheet.Name = Left(Activeworkbook.Name, InStr(Activeworkbook.Name, ".") - 1) & "_1_month"
Sheets(2).Select
ActiveSheet.Name = Left(Activeworkbook.Name, InStr(Activeworkbook.Name, ".") - 1) & "_by_month"
Activeworkbook.Sheets.Select
ActiveSheets.Copy After:=Workbooks("Macro sheets.xlsm").Sheets(Sheets.Count)
Else
Sheets(1).Select
ActiveSheet.Name = Left(Activeworkbook.Name, InStr(Activeworkbook.Name, ".") - 1)
Activeworkbook.Sheets.Select
ActiveSheets.Copy After:=Workbooks("Macro sheets.xlsm").Sheets(Sheets.Count)
End If
Application.CutCopyMode = False
myObject.Close , SaveChanges:=False
Loop
End Sub
Здравствуйте, Дэйв, большое спасибо за ваш ответ. Теперь макрос работает для части за другим, поэтому для книг с одним рабочим листом. Есть ли у вас какие-либо идеи, как решить проблему с двумя выбранными рабочими листами? –
', если Activeworkbook.Worksheets.Count = 2, то листы (1) .Select ActiveSheet.Name = Левый (Activeworkbook.Name, InStr (Activeworkbook.Name,) "" - 1) & "_1_month" Листы (2) .Select ActiveSheet.Name = Left ("" Activeworkbook.Name, InStr (Activeworkbook.Name,) - 1) & "_by_month" Activeworkbook.Sheets.Select «вот проблема: ActiveSheets.Copy After: = Рабочие книги («Macro sheets.xlsm»). Листы (таблицы.) 'отсюда это работает: Else' –
Это снова ссылка на Activesheets. Вместо того, чтобы выбирать все листы, а затем пытаться их скопировать, вы можете изменить Activeworkbook.Sheets.Select for Activeworkbook.Sheets.Copy – Dave