#excel #vba
#excel #vba
Вопрос:
Я пытаюсь скопировать один лист «RESULTADOS» в новую книгу с диапазоном значений ячейки на основе имени листа «U3». Мой код отлично копирует лист, но выдает ошибку об имени, а новый файл не открывается нормально, поэтому я не знаю, где его ошибка. Я надеюсь на некоторую помощь.
Мой код:
Sub CopySheetToNewWorkbook()
Dim wFrom As Workbook
Dim wTo As Workbook
Set wFrom = ActiveWorkbook
Set wTo = Workbooks("FileResult.xlsx")
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
With wFrom
.Sheets("RESULTADOS").Range("A1:Y100").Copy
End With
With wTo
With .Sheets("HOJA1")
.Range("A1").PasteSpecial Paste:=xlPasteAll
.name = wFrom.Sheets("RESULTADOS").Range("U3").Value
End With
End With
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub
Заранее благодарю вас.
График объекта на листе «RESULTADOS» не копируется в новую книгу. Какой параметр предназначен для копирования объектов гистограммы?
ОБНОВИТЬ код:
Sub CopySheetToNewWorkbook()
Dim wbFrom As Workbook
Dim wbTo As Workbook
Set wbFrom = ThisWorkbook
Set wbTo = "D:FileResult.xlsx"
Application.ScreenUpdating = False
With wbTo
With .Sheets(.Sheets.Count)
wbFrom.Sheets("RESULTADOS").Range("A1:Y100").Copy
.Range("A1").PasteSpecial
.Range("A1").PasteSpecial xlPasteColumnWidths
.Name = wbFrom.Sheets("RESULTADOS").Range("U3").Value
End With
.Worksheets.Add After:=.Sheets(.Sheets.Count)
.Save
End With
Application.ScreenUpdating = True
End Sub
Комментарии:
1. Где у вас есть код? В книге, содержащей рабочий лист
RESULTADOS
или в другой книге?2. В результатах рабочего листа есть код.
3. Есть идея переименовать измененный рабочий лист
HOJA1
, а затем создать новый рабочий листHOJA1
?4. В новой книге по умолчанию «Hoja1» есть, вы должны изменить имя в соответствии со значением ячейки (диапазон U3), возможно, необходимо удалить «Worksheets.Add().name = Sheets(«HOJA1″)»
5. Рабочая книга («FileResult») открыта или закрыта?
Ответ №1:
Копирование из одной книги в другую
Option Explicit
Sub CopySheetToNewWorkbook()
Dim wbFrom As Workbook
Dim wbTo As Workbook
Set wbFrom = ThisWorkbook
Set wbTo = Workbooks.Open(ThisWorkbook.Path amp; "FileResult.xlsx")
Application.ScreenUpdating = False
With wbTo
With .Sheets("HOJA1")
wbFrom.Sheets("RESULTADOS").Range("A1:Y100").Copy
.Range("A1").PasteSpecial
.Range("A1").PasteSpecial xlPasteColumnWidths
.Name = wbFrom.Sheets("RESULTADOS").Range("U3").Value
End With
.Worksheets.Add After:=.Sheets(.Sheets.Count)
ActiveSheet.Name = "HOJA1"
'.Save
'.Close
End With
Application.ScreenUpdating = True
End Sub
Комментарии:
1. Спасибо, есть одна вещь, невозможно добавлять больше листов каждый раз, когда я копирую из листов («RESULTADOS»). Диапазон («U3»).Значение и, во-вторых, формат копирования должен быть полной копией, а не значениями. Я предпочитаю, чтобы файл был открыт.
2. @Kais: Я отредактировал код. Я не понимаю ваш первый вопрос? У вас не может быть листов с одинаковыми именами, поэтому вы должны объяснить, как вы их назовете. Если
FileResult.xlsx
открыто или закрыто, код будет работать. Если вам это не нравится, просто удалите.Open(...)
.3. Еще раз спасибо, вопрос относится к копии листа, которая должна иметь тот же формат в рамке, потому что на новом листе формат изменен по всей ширине столбцов.
4. Потому что без диапазона («A1: Y100»), wbFrom. Листы («РЕЗУЛЬТАТЫ»).копирование создает новую книгу??