-2

一連のダッシュボードを生成するための VBA ループがあります。これは、1 つの特定のセルで 2 文字のコードを変更し、ルックアップを実行して、そのワークシートで一連のグラフを更新できるようにすることで機能します。これまでのところ、更新されたダッシュボードごとに PDF をエクスポートしてきましたが、今度はそのワークシートの静的コピーを Excel で作成する必要があります。

コードを交換する間に、更新するワークシートのコピーを作成し、別のワークブックに保存できますか? 20 の同様のワークシートを含む 1 つのワークブックを生成することになります。チャートを無期限に凍結したい。

自動再計算を防ぐことでこれを行うことができますか、または誰かが別の方法を提案できますか? ワークシート自体には、10 ~ 15 個の個別のグラフが含まれています。

4

1 に答える 1

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 として渡す必要があります。

于 2013-08-27T12:16:50.293 に答える