我有两个工作簿,一个共享的“xlsx”文件A存储数据和不共享“xlsm”文件B,其中包含我的宏。我想保持定期跟踪文件A和密码中的更改 - 保护此更改历史记录。我知道文件A中有一个“跟踪更改”功能,它可以创建一个包含更改历史记录的单独工作表。但是,此工作表位于正在共享的工作簿A中。有没有办法在B中编写宏来定期从A中提取此更改历史记录,将其放入带有密码的“xlsx”文件C中?
这里的重点是我希望防止更改历史记录受到损害。只有我可以访问它。请注意,我无法使文件A“启用宏”并在其中写入宏。
感谢。
答案 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