更改文件名后,Excel数据透视表数据源仍指向之前的文件名。

4
我有一个包含多个数据透视表的Excel工作簿,这些透视表引用了工作簿中的数据。所有透视表引用的数据都包含在此工作簿中(“版本1”)。
我想将此工作簿重命名为“版本2”,但是当我重命名工作簿时,所有透视表都会引用“版本1”数据。我希望透视表引用“版本2”的数据。
我尝试过多种操作设置的组合,但我无法找到一种组合设置,可以自动更改透视表源引用为新命名的“版本2”。
我知道可以编写VBA脚本来解决此问题,但我想知道是否有非VBA解决方案。

在更改名称之前,您有两个文件还是一个文件?如果只有一个文件,我很惊讶您能够创建具有对工作簿名称的引用的数据透视表。它应该只与工作表相关。您能否使用数据透视表数据源的图片更新您的问题?或者至少在此处粘贴地址。 - Byron Wall
8个回答

3

我曾经遇到过这个问题(在Excel 2013中使用)。在简单复制或重命名文件后,Excel开始抱怨安全性(外部数据源),我无法刷新数据透视表(出现“无法打开数据透视表源文件xxx”的消息,其中xxx是旧文件名)。

1)如何修复破损的工作簿:

激活数据透视表(将光标放置在内部),以便显示“PIVOTTABLE TOOLS”选项卡。单击“分析”并点击更改数据源按钮。将当前位置放在文本框内(不要使用箭头键!)并删除文件名,包括周围的[]字符。刷新数据透视表。 对工作簿中的每个数据透视表都执行此操作。 完成。

2)如何彻底摆脱这个讨厌的问题:

我打开了原始/修复的工作簿。激活“PIVOTTABLE TOOLS \ ANALYZE”选项卡。单击“选项”按钮(在我的Excel中为选项卡左侧),切换到“数据”选项卡,然后取消选中“将源数据与文件一起保存”。忽略警告(只需单击“确定”即可)。现在我可以随意复制/重命名文件,没有任何问题...

3)解决方法(为了安全起见)-永远不要在Windows资源管理器或其他文件管理器中复制工作簿,而是使用Excel中的另存为功能-只需打开要复制的工作簿并使用另存为即可。


感谢这些技巧... (1) 可以工作,但是很麻烦。 (2) 可以工作,但是不能保存,所以每次打开文件都需要重新设置。 (3) 对我来说不起作用。一旦我使用“另存为”,所有的数据透视表都开始引用旧文件。我使用的是“Microsoft Office Professional Plus 2013”。 - krubo
很奇怪,(3) 对我来说绝对有效。在使用“另存为”之前,请确保原始文件中数据区域的定义不包含文件名... - Michal Levý

1
问题在于.xlsx文件的格式。
我通过以下方式解决了这个问题:
  1. 将文件保存为.xls,但不要使用与.xlsx文件相同的名称
  2. 在兼容性检查器弹出窗口上点击继续

  3. 在弹出窗口上点击YES,询问是否重新计算所有公式,因为使用了早期版本的Excel。

  4. 如果您有多个数据透视表,则可能需要在此之后重新制作一些数据源。保存并另存为后,它就可以工作了。它将数据区域保留为数据透视表的源。

一旦切换到.xlsx,问题就会再次出现。

1
欢迎来到 Stack Overflow!请随意参观一下我们的导览,如果您需要更多关于本站的帮助,请查看这里。如果您遇到了帮助页面没有涉及的问题,请在meta上提问。 - Claudia
谢谢!我无法用这种方法转换我的损坏的xlsx数据透视表,但我从头开始重建了整个工作簿,并将其保存为xls格式,现在它可以正常工作。我可以另存为,我的数据透视表仍然可以继续读取当前(新另存为)文件中的数据。 - krubo

1

阅读以下帖子后,我实施了提到的VBA解决方案。 https://social.technet.microsoft.com/Forums/office/en-US/43bf5110-dfad-40e5-a71c-e9736da6fbc2/data-source-path-in-pivot-table-changes-to-absolute-on-its-own?forum=excel

VBA代码如下:

Sub Update_PivotTables_Source()
Dim currWS As Worksheet
Dim currPT As PivotTable
 On Error Resume Next
 For Each currWS In Application.Worksheets
    For Each currPT In currWS.PivotTables
        currPT.SourceData = Mid(currPT.SourceData, InStr(1,currPT.SourceData, "!") + 1)
   Next currPT
 Next currWS
End Sub

在帖子中提到的所有非VBA解决方案对我都不起作用。


以上的VBA代码仅适用于数据透视表与数据位于同一工作表中的情况,这种情况比较少见。如果数据源是一个已命名区域,则该代码也可行。如果不是上述两种情况,我建议将上述代码中的 "!" 替换为 "]",这将保留工作表名称但移除参考文件名。然后在 Mid 函数前面加上 "'" &。完成的代码行看起来会像这样。 currPT.SourceData = "'" & Mid(currPT.SourceData, InStr(1, currPT.SourceData, "]") + 1) - Bryansix

0
这是解决方案:

我在这个主题中没有看到任何真正简单的解决方法,所以我在发帖。这种方法似乎对我有用。

在Windows资源管理器中,右键单击文件并选择复制。然后将其粘贴到同一文件夹中。一个新文件将被创建为“filename COPY”。然后可以在那里重新编辑文件名(例如使用新日期)。然后您可以更新任何数据表,数据透视表将引用该文档内部的那些表而不是旧文件。

谢天谢地,这起作用了!

希望能帮助其他人!

菲尔

来源:https://social.technet.microsoft.com/Forums/exchange/en-US/43bf5110-dfad-40e5-a71c-e9736da6fbc2/data-source-path-in-pivot-table-changes-to-absolute-on-its-own?forum=excel&prof=required


0

转到源选项卡/表格,点击“表格工具”中的“设计”,在调整大小表格上方左上角为其命名,例如“data”。然后进入您的数据透视表-分析-更改数据源,并键入您刚刚给该表命名的名称,即我们的情况下是“data”,并确认。关键是,您的数据透视表仅引用表名称而不包括文件名。对于所有其他数据透视表重复此操作,现在您的数据透视表应该会更新,无论您的文件名是什么。


0
点击"分析"--> "更改数据源" --> "表/区域":如果文件已移动,请更新Excel文件名和/或文件夹源。
这应该解决问题。

0

我认为我可能已经找到了解决方案。这是对我有用的方法:

  1. 打开具有损坏路径的文件
  2. 打开损坏工作簿引用的文件
  3. 然后删除数据表(在损坏的工作簿中)应该引用的数据表
  4. 将(不要复制)损坏的数据表从引用损坏的数据透视表的文件中移动到损坏的文件中。现在,您的数据透视表应该只引用工作簿内的表格。
  5. 在以前损坏的文件中创建一个空白表格
  6. 将除了之前创建的空白表格之外的所有表格移动(而不是复制)到新工作簿中。
  7. 本地保存到您的计算机上。
  8. 上传到您想要的位置。

完成所有这些步骤后,问题没有再次出现。我能够自由地使用“另存为”或在Windows资源管理器中复制此工作簿。


0

我找到了另一个方法!!!

  1. 将XLS或XLSM文件解压缩到目录中
  2. 查找XL/Connections.XML文件,并最好使用Notepad++打开
  3. 在<Connection>节点中,查找deleted="1"。将其更改为"0"。
  4. 注意Name字段的内容。
  5. 保存xml文件。
  6. 将目录内容(而不是目录)压缩成AnyNewFileName.XLSM(或XLS)
  7. 打开这个新电子表格
  8. 在Data/Queries和Connections中查找步骤4中的Name
  9. 删除该查询或连接。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接