У меня есть рабочая тетрадь с тремя рабочими листами: продукт, клиент, журнал.
Что мне нужно, так это макрос, назначенный кнопке в каждом из вышеперечисленных листов.
Если пользователь нажимает кнопку, активный лист должен быть сохранен как новая рабочая книга со следующим соглашением об именах:
SheetName_ContentofCellB3_DD.MM.YYYY
, где
- SheetName должно быть именем
текущий активный лист
- ContentofCellB3
содержание ячейки B3 активного
лист каждый раз
- ДД.ММ.ГГГГ
текущая дата
Следующий макрос, который я написал, делает вышеупомянутое:
Sub MyMacro()
Dim WS As Worksheet
Dim MyDay As String
Dim MyMonth As String
Dim MyYear As String
Dim MyPath As String
Dim MyFileName As String
Dim MyCellContent As Range
MyDay = Day(Date)
MyMonth = Month(Date)
MyYear = Year(Date)
MyPath = "C:\MyDatabase"
Set WS = ActiveSheet
Set MyCellContent = WS.Range("B3")
MyFileName = "MyData_" & MyCellContent & "_" & MyDay & "." & MyMonth & "." & MyYear & ".xls"
WS.Copy
Application.WindowState = xlMinimized
ChDir MyPath
If CInt(Application.Version) <= 11 Then
ActiveWorkbook.SaveAs Filename:= _
MyFileName, _
ReadOnlyRecommended:=True, _
CreateBackup:=False
Else
ActiveWorkbook.SaveAs Filename:= _
MyFileName, FileFormat:=xlExcel8, _
ReadOnlyRecommended:=True, _
CreateBackup:=False
End If
ActiveWorkbook.Close
End Sub
Однако есть некоторые проблемы, которые я хотел бы получить от вас:
- Как мне изменить вышеупомянутый макрос так
что пользователь может решить путь
где будет новая рабочая тетрадь
Спасенная
- Как мне изменить вышеуказанный макрос, чтобы новая книга не включала макросы, которые были частью листа исходной книги?
- Ты видишь что-нибудь в моем макросе
это можно сделать еще лучше
способ
Спасибо всем за потраченное время.
P.S. Для моего случая использования всегда должна быть обратная совместимость от Excel 2007 до Excel 2002