2012-07-10 74 views
2

我有非常大的文件銷售全球銷售數據,我需要按國家和產品過濾,然後分析。由於我需要一次又一次地用不同的國家/產品組合進行同樣的分析,因此我試圖用宏來做到這一點。Excel宏生成的文件副本保留鏈接到原始文件

這是宏觀的作用:

  1. 打開源文件與全局數據;
  2. 過濾數據;
  3. 將其複製並粘貼到包含宏的工作簿中;
  4. 重新計算和刷新工作簿;
  5. 將該文件的副本保存到另一個文件夾。

宏似乎運行正常和文件被保存,但是我遇到了在步驟4 2點的問題,5:

  • 透視表似乎並沒有讓人耳目一新 - 這可能是因爲第二個問題:
  • 在保存副本的所有數據透視表仍引用原文件

我寧願以修復產生不鏈接複製的文件這兩個問題,但我也開任何bandai ds可能會允許我強制複製的文件鏈接到自己(當我手動執行時,這似乎不起作用)。

我有完整的代碼,如果你想看到這一切,但因爲我懷疑這個問題是在我如何保存文件,我只是將這一塊粘貼在這裏。讓我知道你是否需要查看宏的另一部分。任何幫助將非常感謝,事先感謝。

保存功能:

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) 
+0

+1好問題。正常的解決方案是用activeworkbook(即新創建的文件)替換創建回源工作簿的鏈接。 – brettdj 2012-07-11 05:18:40

+0

感謝佈雷特 - 我有同樣的想法並嘗試過,有很多例子可以看看,但是由於某種原因無法使它工作。無論我嘗試多少種不同的方式,我都會在源數據分配上不斷收到錯誤。什麼工作沒有複製文件並以不同的名稱保存。這並不理想,因爲這些文件仍然有宏和一些不必要的數據。希望知道保存功能的人能夠更好地瞭解一些情況。 – l85m 2012-07-11 15:58:34

回答

0

會分享我開發的,因爲我沒有得到一個更優雅的解決方案的任何叮咬變通方法:

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 

在父函數結束時,我關閉當前文件,重新打開原始文件,並循環執行新的工作書籍來刪除宏。

相關問題