定期将共享工作簿的更改存储到隔离的工作簿中

时间:2015-12-22 20:36:42

标签: excel excel-vba vba

我有两个工作簿,一个共享的“xlsx”文件A存储数据和不共享“xlsm”文件B,其中包含我的宏。我想保持定期跟踪文件A和密码中的更改 - 保护此更改历史记录。我知道文件A中有一个“跟踪更改”功能,它可以创建一个包含更改历史记录的单独工作表。但是,此工作表位于正在共享的工作簿A中。有没有办法在B中编写宏来定期从A中提取此更改历史记录,将其放入带有密码的“xlsx”文件C中?

这里的重点是我希望防止更改历史记录受到损害。只有我可以访问它。请注意,我无法使文件A“启用宏”并在其中写入宏。

感谢。

2 个答案:

答案 0 :(得分:0)

使用私人工作簿,您可以使用宏打开共享工作簿,并将工作表再次复制到私人工作簿中。

编辑:对不起,我错过了将其保存到文件C中的部分。

这是为了让你开始:

Sub wbCopy()
    Dim sharedWb, myWb As Workbook
    Dim sharedWs As Worksheet

    Set myWb = New Workbook

    Workbooks.Open Filename:="192.168.0.10\sharedWorkbook.xls", ReadOnly:=True
    Set sharedWb = "sharedWorkbook.xls"
    Set sharedWs = sharedWb.Worksheets(2)

    sharedWs.Copy myWb.Worksheets(Sheets.Count)

    Workbooks("sharedWorkbook.xls").Close

    myWb.SaveAs Filename:="File C.xls"
End Sub

答案 1 :(得分:0)

当您打开共享WB时,更新更改信息,然后复制历史记录表

Sub Demo()
    Dim wbShared As Workbook
    Dim wbHistory As Workbook

    Set wbHistory = Application.Workbooks.Open( _
      Filename:="\\Path\To\Your\History\FileC.xlsx", _
      Password:="Password")

    Set wbShared = Application.Workbooks.Open( _
      FileName:="\\Path\To\Your\Shared\FileA.xlsx")

    ' Generate History Sheet (maybe change xlAllChanges to suit needs)
    With wbShared
        .HighlightChangesOptions _
          When:=xlAllChanges, _
          Who:="Everyone"
        .ListChangesOnNewSheet = True
    End With

    ' Copy out History to FileC
    wbShared.Worksheets("History").Copy After:=wbHistory.Sheets(wbHistory.Sheets.Count)

    ' Clean Up
    wbShared.Close False
    wbHistory.Close True
End Sub