Скопируйте и сохраните лист в новой книге, названной в честь содержимого некоторых конкретных ячеек из этого же листа - PullRequest
1 голос
/ 12 марта 2019

У меня есть лист в рабочей книге (.xlsm), который я хочу «скопировать» в новую рабочую книгу (.xlsx). При этом мне также нужно, чтобы новая рабочая книга была названа в честь ячеек B3 и B5 на одном листе.

Я нашел коды тут и там, либо для создания новой книги на листе, либо для переименования существующей книги. Я пытался «смешать» это, но я застрял с аргументом «Filename: = Name». Возвращает ошибку. Мой единственный способ назвать новую книгу - использовать "". Если кто-то знает причину и имеет какое-либо руководство для исправления, это будет оценено.

Sub Copy_Save_Sheet_As_Workbook()

Dim wb As Workbook
Dim Path As String
Dim Name As String

Set wb = Workbooks.Add
Path = "C:\Users\..." 'That line is not used now. Will try later to work on it.
Name = Worksheets("Sheet1").Range("B5")

ThisWorkbook.Activate
Worksheets("Sheet1").Copy Before:=wb.Sheets(1)
wb.Activate
wb.SaveAs FileName:=Name & ".xlsx", FileFormat:=xlNormal

End Sub

== РЕДАКТИРОВАТЬ ==

Вот модифицированный код после исправления от CATSandCATSandCATS.

Sub Copy_Save_Sheet_As_Workbook()

Dim wb As Workbook

Set wb = Workbooks.Add

ThisWorkbook.Activate
Worksheets("Sheet1").Copy Before:=wb.Sheets(1)
wb.Activate
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Range("B3") & Range("B5") & ".xlsx"

End Sub

1 Ответ

1 голос
/ 12 марта 2019

Попробуйте это:

ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Range("B3") & Range("B5") & ".xlsx"

вместо этого:

wb.SaveAs FileName:=Name & ".xlsx", FileFormat:=xlNormal

И, очевидно, вы можете добавить в файл больше вещей, например дату:

& Format(Now, "mm.dd.yyyy")

Или текст:

& "1Q2019 - March Budget"

И если вы не хотите сохранять его в том же месте, где находится файл, содержащий макрос, вы можете просто добавить свой «C: \ Users ...»вместо ThisWorkbook.path.

...