Как сделать резервную копию текущего листа или книги - PullRequest
0 голосов
/ 04 августа 2020

Хи, у меня есть рабочая тетрадь по Excel, состоящая из шести листов. В книге все работает нормально. Я написал макрос, который помогает мне делать резервную копию текущей книги вместо текущего листа. Код такой, как показано ниже.

Sub FileSaveAs()
    Dim strFolder As String
    Dim i As Long

    'Find the position of the period in the file name
    i = InStr(ActiveWorkbook.Name, ".")

    'Create a default file name by concatenating the file name without the extention _
        plus the current date and time, and plus the xlsm extention
    Filename = Left(ActiveWorkbook.Name, i - 1) & "_" & Format(Now, "yyyy-mm-dd_hh mm") & ".xlsm"

    'Open Save As dialog to a default folder with default file name
    With Application.FileDialog(msoFileDialogSaveAs)
        .AllowMultiSelect = False
        .FilterIndex = 2  '2 = xlsm
        .InitialFileName = "Report" & Filename
        .InitialView = msoFileDialogViewDetails
        If .Show = -1 Then strFolder = .SelectedItems(1) Else Exit Sub
        .Execute
    End With
End Sub

Он отлично работает для создания резервной копии книги вместо текущего рабочего листа без потери каких-либо данных, форматирования или настроек на листе. У меня две проблемы. 1- Когда я нажимаю кнопку резервного копирования, активная книга закрывается и открывается книга резервного копирования. 2- Я изо всех сил старался сделать резервную копию текущего рабочего листа без потери каких-либо данных или форматирования, но я не делаю этого в облаке, потому что все, когда я нажимаю кнопку резервного копирования для текущего рабочего листа (я написал еще один макрос, чтобы сделать резервную копию для текущий рабочий лист, но он не работает, поэтому я не писал его здесь) потеряно.

Что я хочу сделать. Я хочу сделать две вещи. 1- Когда я нажимаю кнопку резервного копирования, исходный рабочий лист остается открытым, в то время как рабочий лист резервного копирования должен оставаться закрытым, чтобы я мог делать резервные копии разных имен из одного и того же основного рабочего листа. 2- Если возможно, мне нужен макрос, который поможет мне сделать резервную копию активного листа без потери каких-либо данных или информации на листе.

Пожалуйста, укажите, где я делаю неправильно. Спасибо за каждого участника.

1 Ответ

1 голос
/ 04 августа 2020
Try,

Sub FileSaveAs()
    Dim strFolder As String
    Dim i As Long
    Dim Fn As String
    Dim Wb As Workbook
    
    Set Wb = ThisWorkbook
    Fn = Wb.FullName
    Wb.Save
    
    
    'Find the position of the period in the file name
    i = InStr(ActiveWorkbook.Name, ".")

    'Create a default file name by concatenating the file name without the extention _
        plus the current date and time, and plus the xlsm extention
    Filename = Left(ActiveWorkbook.Name, i - 1) & "_" & Format(Now, "yyyy-mm-dd_hh mm") & ".xlsm"

    'Open Save As dialog to a default folder with default file name
    With Application.FileDialog(msoFileDialogSaveAs)
        .AllowMultiSelect = False
        .FilterIndex = 2  '2 = xlsm
        .InitialFileName = "Report" & Filename
        .InitialView = msoFileDialogViewDetails
        If .Show = -1 Then strFolder = .SelectedItems(1) Else Exit Sub
        .Execute
    End With
    Set Wb = ActiveWorkbook
    
    Workbooks.Open (Fn)
    Wb.Close (0)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...