Excelmacros生成的文件副本保持链接到原始文件

我有非常大的文件销售全球销售数据,我需要过滤的国家和产品,然后分析。 由于我将需要不同的国家/产品组合一遍又一遍地执行相同的分析,我正在试图用macros来做到这一点。

macros是这样做的:

  1. 用全局数据打开源文件;
  2. 过滤数据;
  3. 将其复制并粘贴到一个包含macros的工作簿中;
  4. 重新计算并刷新工作簿;
  5. 将该文件的副本保存到另一个文件夹。

macros似乎运行良好,文件正在保存,但是我遇到了步骤4和5中的两个问题:

  • 数据透视表似乎并不令人耳目一新 – 这可能是因为第二个问题:
  • 保存的副本中的所有数据透视表仍然是指原始文件

我宁愿通过生成没有链接的复制文件解决这两个问题,但我也打开任何可能允许我强制复制的文件链接到自己的bandaids(这似乎不工作,当我这样做手动地)。

我有完整的代码,如果你想看到这一切,但因为我怀疑这个问题是在我如何保存文件,我只是把这一块粘贴在这里。 让我知道如果你需要看到macros的另一部分。 任何帮助将不胜感激,提前感谢。

保存function:

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) 

将分享我开发的解决方法,因为我没有得到一个更优雅的解决scheme的任何咬伤:

 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 

在父函数结束时,closures当前文件,重新打开原始文件,并循环遍历新的工作簿以删除macros。