Excel宏生成的文件副本保留指向原始文件的链接
我有非常大的文件中的销售全球销售数据,我需要按国家和产品进行筛选,然后进行分析。由于我需要对不同的国家/地区/产品组合反复执行相同的分析,因此我尝试使用宏来执行此操作 这就是宏的作用: 打开包含全局数据的源文件; 过滤数据; 复制并粘贴到包含宏的工作簿中; 重新计算和刷新工作簿和文档; 将文件的副本保存到另一个文件夹。 宏似乎运行正常,文件正在保存,但在步骤4和5中我遇到了两个问题: 数据透视表似乎没有刷新-这可能是因为第二个问题: 保存副本中的所有透视表仍引用原始文件 我更愿意通过生成没有链接的复制文件来解决这两个问题,但我也愿意接受任何可能允许我强制复制文件链接到自身的绷带。当我手动执行时,这似乎不起作用 我有完整的代码,如果你想看到它的全部,但因为我怀疑问题是我如何保存文件,我将只是粘贴在这里。如果需要查看宏的其他部分,请告诉我。任何帮助都将不胜感激,提前谢谢 保存功能:Excel宏生成的文件副本保留指向原始文件的链接,excel,vba,save,pivot-table,Excel,Vba,Save,Pivot Table,我有非常大的文件中的销售全球销售数据,我需要按国家和产品进行筛选,然后进行分析。由于我需要对不同的国家/地区/产品组合反复执行相同的分析,因此我尝试使用宏来执行此操作 这就是宏的作用: 打开包含全局数据的源文件; 过滤数据; 复制并粘贴到包含宏的工作簿中; 重新计算和刷新工作簿和文档; 将文件的副本保存到另一个文件夹。 宏似乎运行正常,文件正在保存,但在步骤4和5中我遇到了两个问题: 数据透视表似乎没有刷新-这可能是因为第二个问题: 保存副本中的所有透视表仍引用原始文件 我更愿意通过生成没有链接
Public Sub SaveAsCopy(filePath As String)
Dim updateStatus As Boolean
'Check current status of Alerts
updateStatus = Application.DisplayAlerts
'Turn off alerts
Application.DisplayAlerts = False
ThisWorkbook.Sheets.Copy 'creates new workbook without macros"
'The New workbook copy is now the Active workbook
'Delete Control Sheet
ActiveWorkbook.Sheets(1).Delete
'Save Macro free version and close
ActiveWorkbook.SaveAs Filename:=filePath, FileFormat:=51
ActiveWorkbook.Close
'Revert back to origional alert status
Application.DisplayAlerts = updateStatus
End Sub
函数调用:
Call SaveAsCopy(filePath)
将与您分享我开发的解决方案,因为我没有接触到更优雅的解决方案:
Public Sub SaveAsCopy(filePath As String)
Dim updateStatus As Boolean
'Check current status of Alerts
updateStatus = Application.DisplayAlerts
'Turn off alerts
Application.DisplayAlerts = False
'Hide Control Sheet
ActiveWorkbook.Sheets(1).Visible = False
'Save Macro free version and close
ActiveWorkbook.SaveAs Filename:=filePath, FileFormat:=52
'Unhide
ActiveWorkbook.Sheets(1).Visible = True
'Revert back to original alert status
Application.DisplayAlerts = updateStatus
End Sub
在父函数结束时,我关闭当前文件,重新打开原始文件,并在新工作簿中循环以删除宏。将分享我开发的解决方案,因为我没有得到任何更优雅的解决方案:
Public Sub SaveAsCopy(filePath As String)
Dim updateStatus As Boolean
'Check current status of Alerts
updateStatus = Application.DisplayAlerts
'Turn off alerts
Application.DisplayAlerts = False
'Hide Control Sheet
ActiveWorkbook.Sheets(1).Visible = False
'Save Macro free version and close
ActiveWorkbook.SaveAs Filename:=filePath, FileFormat:=52
'Unhide
ActiveWorkbook.Sheets(1).Visible = True
'Revert back to original alert status
Application.DisplayAlerts = updateStatus
End Sub
在父函数结束时,我关闭当前文件,重新打开原始文件,并循环新工作簿以删除宏。+1问得好。通常的解决方案是用activeworkbook(即新创建的文件)替换创建回源工作簿的链接。感谢Brett-我也有同样的想法并尝试过,有很多例子要看,但由于某种原因无法使其工作。不管我用了多少种不同的方法,我在源数据分配上总是出错。有效的方法是不复制文件并以其他名称保存。但这并不理想,因为文件中仍然有宏和一堆不必要的数据。希望对save函数非常熟悉的人能够为更好的方法提供一些帮助。+1个好问题。通常的解决方案是用activeworkbook(即新创建的文件)替换创建回源工作簿的链接。感谢Brett-我也有同样的想法并尝试过,有很多例子要看,但由于某种原因无法使其工作。不管我用了多少种不同的方法,我在源数据分配上总是出错。有效的方法是不复制文件并以其他名称保存。但这并不理想,因为文件中仍然有宏和一堆不必要的数据。希望对save函数非常熟悉的人能够为更好的方法提供一些帮助。