2013-08-27 57 views
-2

我有一個VBA循環來生成一系列儀表板。它通過在一個特定單元格中更改兩個字母的代碼,執行查找並允許在該工作表上更新一組圖表來工作。到目前爲止,我一直在爲每個刷新儀表板導出PDF,但現在我需要在Excel中創建該工作表的靜態副本。將工作表複製到新工作簿並防止它們更改

在交換代碼之間,我可以複製更新的工作表,並將其保存在另一個工作簿中。我最終會用20個類似的工作表生成一個工作簿。我想讓圖表無限期地凍結。

我可以通過阻止自動重新計算來做到這一點,或者任何人都可以提出另一種方法嗎?工作表本身包含10-15個分開的圖表。

回答

0

如果我理解正確,您想將當前工作表複製到現有工作簿上的新工作表,剝離出任何公式或VBA?這應該做到這一點。

Sub transferStrip(destFile As String) 
    Dim wbSource As Workbook 
    Dim wbDest As Workbook 
    Dim shCopy As Worksheet 
    Dim shPaste As Worksheet 
    Dim chtIndex As Integer 

    Set wbSource = ActiveWorkbook 
    Set wbDest = Workbooks.Open(destFile) 
    Set shCopy = wbSource.Sheets("[SheetName]") 

    shCopy.UsedRange.Copy 
    Set shPaste = wbDest.Sheets.Add(After:=wbDest.Sheets(wbDest.Sheets.Count)) 
    shPaste.Range("A1").PasteSpecial (xlPasteFormats) 
    shPaste.Range("A1").PasteSpecial xlPasteValues 

    chtIndex = 1 
    For Each ch In shCopy.ChartObjects 
     shCopy.ChartObjects(chtIndex).CopyPicture 
     shPaste.Paste 
     shPaste.Shapes(chtIndex).Left = shCopy.ChartObjects(chtIndex).Left 
     shPaste.Shapes(chtIndex).Top = shCopy.ChartObjects(chtIndex).Top 
    Next ch 

wbDest.Close (True) 
End Sub 

你需要改改[SHEETNAME]你希望從源工作簿複製,並傳遞要複製爲destFile工作簿的路徑表的名稱。

+0

謝謝。你知道這是否會保存圖表嗎? –

+0

哎呀,對不起。錯過了。修正後的代碼會將每個圖表作爲圖像複製到目標工作表。但是,如果在運行之前目標表單上有任何實際圖像,它將不會運行。 – hoopzbarkley

+0

非常感謝。我會說這種方法不太正確(圖表出現相同和錯誤的位置),但粘貼值的想法是非常有用的。 –

相關問題