Что вы пытаетесь сделать с этим? Set wb = ActiveWorkbook.Sheets("Sheet1").Add
? У объекта Sheet
нет метода Add
. Это ошибка 438.
Чтобы создать новую книгу во время выполнения, вы можете использовать метод Workbooks.Add
Set wb = Workbooks.Add
Чтобы создать новую рабочую книгу из существующего рабочего листа , как, возможно, вы пытаетесь это сделать, это один из немногих случаев, когда можно использовать ActiveWorkbook
:
Dim ws as Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
ws.Copy ' If Destination isn't specified, this creates a new workbook
Dim wb As Workbook
Set wb = ActiveWorkbook ' The newly created workbook is Active now
strFileName = "C:\Users\" & ws.Name & ".xls" '<~~ this variable is never used, it doesn't do anything. You may want to remove it to avoid ambiguity.
wb.SaveAs Filename:=Range("B4").Value & Range("E6").Value & " vs " _
& Range("E7").Value & " - " & Format(Date, "dd-mm-yyyy")
wb.Close
ПРИМЕЧАНИЕ : если значения, которые вы используете для получения Filename
, не существуют на листе 1, это может вызвать ошибку или сохранить как-нибудь другое, неожиданное имя файла. Рекомендуется всегда полностью квалифицировать объекты диапазона , в противном случае в Excel по умолчанию предполагается, что они находятся на том рабочем листе, который активен во время выполнения.