#vba #excel #macros
#vba #excel #макросы
Вопрос:
Я нашел приведенный ниже код для сохранения листа как новой рабочей книги, но я хотел бы знать, возможно ли изменять имя сохранения при каждом запуске макроса на значение на листе 1 в ячейках B2 и на определенное местоположение файла.
Я попробовал способ, приведенный ниже, и он просто сохраняет файл с именем расположения файла вместо того, чтобы сохранять его в указанном расположении файла.
Sub sb_Copy_Save_Worksheet_As_Workbook()
Dim wb As Workbook
Set wb = Workbooks.Add
ThisWorkbook.Sheets("Sheet2").Copy Before:=wb.Sheets(1)
wb.SaveAs "C:temptest1.xlsx"
End Sub
Будем признательны за любую помощь
большое спасибо
Джейми
Комментарии:
1. Имя файла находится в B2 , где хранится расположение файла??
Ответ №1:
Допустим, «Sheet1» имеет в ячейке B2 значение «test1» (имя файла), тогда вы можете использовать следующее:
Sub sb_Copy_Save_Worksheet_As_Workbook()
Dim wb As Workbook
Dim myPath As String
Dim myFilename As String
Dim myFileExtension As String
myPath = "C:temp" 'you can change this
myFileExtension = ".xlsx"
myFilename = ThisWorkbook.Sheets("Sheet1").Range("B2").Value
Set wb = Workbooks.Add
ThisWorkbook.Sheets("Sheet2").Copy Before:=wb.Sheets(1)
wb.SaveAs myPath amp; myFilename amp; myFileExtension
wb.Close False
End Sub
Если ваша ячейка B2 уже содержит расширение файла (так что это «test1.xlsx » в B2) просто удалите myFileExtension
части из кода.
Папка, в которую вы хотите сохранить свой файл, должна существовать. Если вам нужна помощь в проверке этого или создании папки в вашем макросе, пожалуйста, оставьте комментарий.
Комментарии:
1. Отлично, огромное вам спасибо
2. есть ли какой-либо способ, которым вы могли бы запустить этот подраздел и после того, как он выполнил вышеуказанное, вернуть вас к исходной рабочей книге?
3. Это фактически сделано. Последняя строка
wb.Close False
закрывает созданную книгу, содержащую Лист2. Таким образом, единственная книга, которая все еще должна быть открыта, — это та, в которой вы запускаете макрос.
Ответ №2:
Попробуйте добавить значение ячейки к строке пути следующим образом:
Sub sb_Copy_Save_Worksheet_As_Workbook()
Dim wb As Workbook
Set wb = Workbooks.Add
ThisWorkbook.Sheets("Sheet2").Copy Before:=wb.Sheets(1)
wb.SaveAs "C:temp" amp; ThisWorkbook.Sheets("Sheet2").Range("B2").Value
End Sub
Расширение файла по умолчанию будет равно .xlsx
, даже если исходный файл является .xlsm
, поэтому вам не нужно добавлять это в строку пути.