如何在工作簿 1 更新时将数据从工作簿 1 添加到工作簿 2 和工作簿 2 更新中

  • 本文关键字:工作簿 更新 添加 数据 excel vba
  • 更新时间 :
  • 英文 :


我对 VBA/宏很陌生,我想创建一个仪表板,将工作簿 1 中的多个图表协作到工作簿 2 中的一个新的集中式工作表中。为此,我决定在 VBA 中添加一个代码,将数据从工作簿 1 复制到工作簿 2 中,但是当我将更改其数据的新信息添加到工作簿 1 中时,它不会自动更新工作簿 2 中的数据。有没有办法同步工作表和两个工作簿,以便工作簿 2 也更新而无需我对其执行任何操作?另外,我正在尝试将工作簿2中的数据转换为自动更新的图表,以便在工作簿2(基本上是一个仪表板)中有一个易于阅读的工作表。

下面的脚本会将工作簿中的所有图表复制到一个工作表中。 我认为,这比将所有内容移动到另一个工作簿中要干净得多。 希望这有帮助。

Sub PullOverAllCharts()
    Dim wsChart As Worksheet
    Dim ws As Worksheet
    Dim oChartObj As ChartObject
    Dim oChart As Chart
    Dim NextRow As Long
    Dim NextColumn As Long
    Dim ChartCount As Long

    Set wsChart = ThisWorkbook.Worksheets("Chart Sheet")
    wsChart.Cells.ClearContents
    On Error Resume Next
    wsChart.ChartObjects.Delete
    On Error GoTo 0
    Worksheets("Chart Sheet").Select
    NextRow = 1
    NextColumn = 1
    ChartCount = 0
    For Each ws In ActiveWorkbook.Worksheets
        If ws.Name <> "Log Sheet" And ws.Name <> "All Data" And ws.Name <> "Chart Sheet" Then
            If ws.ChartObjects.Count > 0 Then
                ChartCount = ChartCount + 1
                ws.ChartObjects(1).Copy
                With wsChart
                    .Paste
                    Set oChartObj = .ChartObjects(.ChartObjects.Count)
                    oChartObj.Left = .Cells(NextRow, NextColumn).Left
                    oChartObj.Top = .Cells(NextRow, NextColumn).Top
                End With
                If ChartCount Mod 4 = 0 Then
                    NextRow = NextRow + 16
                    NextColumn = 1
                Else
                    NextColumn = NextColumn + 8
                End If
            End If
        End If
    Next
    wsChart.Activate

End Sub

最新更新