Доброго времени суток. Есть множество подобных вопросов, но не один из найденных макросов не отвечает заданным критериям.
Как сохранить в отдельные книги определенные листы?
1. Чтобы активация происходила кнопкой(предполагаю что через вставку фигуры). 2. Чтобы сохранились определенные активные листы(кнопка находится на первом листе, листы для сохранения на 3-4-5(может больше, может меньше) название у всех разное) 3. Чтобы название файлов было по названию листа 4. Чтобы путь сохранения файлов вставлялся в ячейку на первом листе 5. Чтобы данные которые находятся на сохраняемом листе были в виде текста(по аналогии "вставить как текст" (на страницах различные формулы, которые не нужны в отделенном листе)).
Буду благодарен за любые идеи, ссылку, наводку, либо ответ "Это 100% не возможно".
Однако я нашёл схожий макрос, чуть его подправил, чтоб название файла так же вводилось в ячейку. Но не могу разобраться как сделать несколько файлов? Попробовал взять часть кода с Вашего макроса, но как-то не вышло. Может подскажите? Пример прикладываю.
P.S. Файлов будет 4-5-6, путь один, названия разные. Название файлов сделаю сцепкой с других листов(может имеет значение).
Sub SaveSheet(ws As Worksheet, sPath As String)
Dim sName As String, Sp As Shape, iFullName As String
Application.DisplayAlerts = False
sName = ws.Range("b2").Value
If sName = "" Then
MsgBox "Вы не указали имя файла.", 48, "Ошибка!"
Application.DisplayAlerts = True: Exit Sub
End If
iFullName = sPath & sName & ".xlsx"
If Dir(iFullName) <> "" Then
MsgBox "Файл с таким именем уже существует. Попробуйте другой.", 64, "Для сведения."
Else
ws.Copy
For Each Sp In ActiveSheet.Shapes
Sp.Delete
Next
ActiveWorkbook.SaveAs Filename:=sPath & sName & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
End If
Application.DisplayAlerts = True
End Sub
Sub SaveWorksheets()
Dim wsht As Worksheet, pt$
pt = ThisWorkbook.Worksheets(1).[a2]
For Each wsht In ThisWorkbook.Worksheets
SaveSheet wsht, pt
Next
End Sub
если путь один на всех, на остальніх листах достаточно в В2 вписать имя будущего файла
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Sub SaveSheet(ws As Worksheet, iFullName As String)
Dim Sp As Shape
Application.DisplayAlerts = False
If Dir(iFullName) <> "" Then
MsgBox "Файл с именем" & vbLf & iFullName & vbLf & _
"уже существует. Попробуйте другой.", 64, "Для сведения."
Else
ws.Copy
For Each Sp In ActiveSheet.Shapes
Sp.Delete
Next
ActiveWorkbook.SaveAs Filename:=iFullName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
End If
Application.DisplayAlerts = True
End Sub
Sub SaveWorksheets()
Dim r&, pt$
With ThisWorkbook.Worksheets(1)
pt = .[a2]: r = 3
Do While Not IsEmpty(.Cells(r, 1))
SaveSheet ThisWorkbook.Worksheets(.Cells(r, 2).Value), pt & .Cells(r, 1) & "xlsx"
r = r + 1
Loop
End With
End Sub
если имена файлов записывать в А3 и далее, а имена соотв. листов в В3 и далее