我有一个具有许多功能的 Excel 工作簿:

  • 一个主要的面向用户的工作表
  • 基于面向用户的表数据的汇总表
  • 基于面向用户的工作表数据的许多图表(例如,具有单独选项卡的图表类型,而不是工作表中的对象 - 我不确定它们是否具有特殊名称或特殊属性)
  • 一系列“背景”工作表,用于计算面向用户的工作表
  • 的值
  • 一个宏,允许用户按他们希望的任何列对用户工作表进行排序,这在面向用户的工作表的 Worksheet_SelectionChange 事件中引用

  • 但是,为了分发,为了简单起见(和文件大小 - 整个数据查询都包含在其中一张纸上),我想剔除工作表。我仍然需要计算面向用户的工作表的值,但每个数据集只计算一次,因此可以很高兴地将其复制为格式然后值。

    然而,问题是将依赖的工作表、图形和宏转移到新工作簿,这样它们就不会引用旧工作簿,而是引用新版本的工作表。理想情况下,我想用 VBA 或其他东西来做这件事,但到目前为止,我的谷歌搜索似乎没有太大的相关性。

    有谁知道如何做到这一点?

    最佳答案

    我不确定我是否完全理解你的问题,但我认为你想要做的是创建一个新版本的工作簿,其中的工作表更少?

    要在 VBA 中做到这一点,这个代码片段是一个很好的起点:

    Sub Macro1()
        ActiveWorkbook.SaveAs Filename:= _
            [your path here]\Book2.xls", FileFormat:=xlNormal, _
    
        Sheets("Sheet2").Select
        ActiveWindow.SelectedSheets.Delete
    End Sub
    

    创建整个工作簿的副本,然后删除不需要的内容将确保链接不会引用旧工作簿。

    一旦您创建了新的工作簿,链接完好无损,就可以很容易地删除所有不需要的内容(计算等)。

    关于vba - 将 Excel 工作表、宏和图形从一个工作簿复制到另一个工作簿,将链接移动到新工作簿,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1157393/

    10-10 18:54
    查看更多