Преобразование листа в рабочую книгу с использованием VBA

#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 , поэтому вам не нужно добавлять это в строку пути.