从外部主表更新工作簿的现有结构化表?
Posted
技术标签:
【中文标题】从外部主表更新工作簿的现有结构化表?【英文标题】:Updating a workbook's existing structured table from an external master table? 【发布时间】:2012-06-12 22:41:02 【问题描述】:目前:我有几张包含一个或多个表格的工作表(例如,Sheet1 有一个表格,而 Sheet2 有三个表格)。在多个最终用户工作簿中都可以找到这些相同的工作表。这些工作表中的表格供工作簿中单元格公式中的结构化引用使用。
目标:我想要另一个工作簿(主工作簿),其中只有包含表格的工作表。将手动对主工作簿进行更新,即添加一行、删除一行、编辑一行、添加一列、删除一列、编辑一列。 一旦主工作簿完成更新,更新后的 [主] 工作表将被放置到各种用户工作簿中,替换现有工作表和表格(使用 VBA)......而不会破坏结构化引用!没有#REF 错误!嗯,这就是我所设想的,但是,它不必完全是这样。此外,公用表必须在最终用户工作簿中,不能外部引用!除非它是使我需要的工作的过程的一部分,当然:-)
我很擅长使用 VBA,但不是 MVP。假设所有工作簿(最终用户和主用户)都存在于同一目录中。主工作簿将包含将更新的工作表传递给最终用户工作簿的代码。 Windows 7 环境中的 Excel 2007 和 2010。
我没有任何代码,因为我试图先手动找出它而不破坏任何东西。欢迎提出建议!谢谢。
[2012 年 6 月 13 日更新]希望这个冗长的解释会有所帮助。
我在做什么: 我有一个工作簿(基本上)将自身复制到最终用户工作簿中(基于用户表单输入的 1 到 n 次)。最终用户工作簿受到保护,以防止最终用户在某些公式中出错(各种形式的工作表/单元格保护)。有些工作表包含表格,这些表格对所有用户都是相同的。这些表用于数据验证(例如,允许:列表;来源:=timing_droplist)和 VLOOKUP(例如,=VLOOKUP($W8,Timing_table,FE$5+1,FALSE))。这些最终用户工作簿每年创建一次,但在一年中更新了三次(它们用于财务/预算)。表格可以随时更新。由于数据被添加到最终用户工作簿中,因此使用更新的表重新生成这些工作簿然后让最终用户重新输入他们的所有数据是不方便的。因此,如果现有的最终用户工作簿可以一起更新公共表(使用 VBA)会更好。
发生了什么(仅举一个例子): “Timing”表存在并包含表“Timing_table”。如果将主“Timing”表添加到工作簿,Excel 会将其重命名为“Timing (2)”。这很正常。但是添加的工作表中的表变成了本地而不是全局,并且它也被重命名,例如,“Timing_table12”。我不知道 Excel 是如何得出表名的数字的,它们可能会改变。如果我删除旧的“计时”表,所有对它的引用都会被破坏(当然)——拉起名称管理器会显示#REF!在值列中。重命名新引用并不能解决问题,因为新引用在新工作表中是本地的。
我尝试手动将一个表格剪切并粘贴到另一个表格中,粘贴为文本,但这不会保留公式(基本上它会执行粘贴为值操作),总的来说,它不起作用。只是在寻找选项。不能选择对这些表进行外部引用。
【问题讨论】:
您不能只拥有一个主工作簿,而不是覆盖现有工作表,而是创建一组新工作表,并在此过程中删除旧工作表吗?还是用户工作表会有自己的个人信息? 对原始问题进行了更新。 【参考方案1】:我认为这个帖子可能会对您有所帮助:http://www.ozgrid.com/forum/showthread.php?t=66791
直接给你回复(假设问题主要涉及外部引用): 亚伦血 回复: 回复:将公式复制到没有路径的新工作表
您已经开发了复制/粘贴到新工作表和工作簿的代码。现在您需要做的就是扫描新工作表的公式并从公式中删除 ext refs。
在您现有的复制/粘贴宏的末尾运行类似的内容...
VB:
Sub ExtRef_Remover()
Dim cell As Range, n As Variant
For Each cell In Workbooks("New_WB").Sheets("Sheet1").Cells.SpecialCells(xlFormulas)
n = Application.Find("]", cell.Formula)
If Not IsError(n) Then
cell.Formula = "='" & Right(cell.Formula, Len(cell.Formula) - n)
End If
Next cell
End Sub
【讨论】:
感谢链接和代码,但这并不能解决我的问题。我了解它的作用,因此向我展示了我的问题陈述在哪里使人们感到困惑。嗯...我将不得不改写我的问题。【参考方案2】:使用广泛的外部参考在这个项目中没有奏效,所以我说服项目经理我们需要改变方向。她同意,除了影响工作簿的生成和稳定性之外,她想要的要求太多,实施起来也花费了太多时间。我最终通过命令按钮将数据拉入必要的表中。 Waaaay 更易于使用且稳定。
【讨论】:
以上是关于从外部主表更新工作簿的现有结构化表?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Libreoffice Calc 工作簿的所有工作表中删除所有图像