无法更改数据透视表的Access数据源 – Excel 2000 SP3中的错误?

我有一套Excel 2000 SP3工作表,它们具有数据透视表,可以从离开我们公司的承包商创build的Access 2000 SP3数据库中获取数据。 不幸的是,他在公司(Novell)networking的私人区域完成了所有的工作,现在他已经离开了我们,驱动器规格已经被删除,并且是无效的。

我们能够通过IT服务台人员将数据库文件恢复到我们的networking区域,但是现在我们必须重新链接所有指向我们的组区域,而不是现在不存在的私有区域。

如果我按照本网站其他地方提供的build议(打开向导,点击“返回”进入“第2步”,点击“获取数据…”我收到一条消息,说明旧的文件规范是无效的path,我需要检查path名是否无效,并且我已连接到文件所在的服务器。

然后,我点击确定,并获得一个login对话框与右侧的“数据库…”button。 我点击它并获得一个“select数据库”对话框,允许我在正确的新位置select适当的数据库。

然后点击确定,这会将我带回“login”屏幕。 我可以通过点击“数据库…”来确认它已经接受了我的新位置,新位置仍然显示。

到目前为止这么好 – 但如果我然后点击确定,我得到两个无用的消息 – 首先我得到一个说,Excel'不能使用'|'; 文件已经在使用中。 – 虽然没有其他文件正在使用。 点击确定,我会回到“login”对话框。

点击确定再给我同样的信息,告诉我旧的filespec是无效的(就像我没有改变任何东西) – 但点击“数据库…”button显示正确的(新)数据库位置是仍然被选中。

任何人都可以告诉我一种使用VBA的方式来更改链接信息,而不必花费数小时的数据透视表向导 – 最好类似于这种方式更新Access Tabledef: –

db.TableDefs(strLinkName).Connect = strNewLink db.TableDefs(strLinkName).RefreshLink 

谢谢!

在数据透视表中select一个单元格,打开vbe(Alt + F11),进入即时窗口(Ctl + G),然后键入

 ?activecell.PivotTable.PivotCache.Connection 

这将返回当前PT使用的连接string(错误的)。 如果更改连接属性,则可以指向正确的位置。 您可能可以破译连接string并自行更改。 但是,如果没有,还有另一种select。 打开一个新的工作簿,数据 – 外部数据 – 新查询(或类似的,我没有2000了)。 创build一个指向你想要的数据库的QueryTable。 然后回到即时窗口并input

 ?Activesheet.QueryTables(1).Connection 

看看连接string应该是什么样子。 使PivotCache连接与QueryTable连接相同,然后刷新。

另请参阅http://dicks-clicks.com/excel/ExternalData5.htm#ChangeConn尽pipe不涉及数据透视表,但许多技术都是相同的。

安装Pivot play plus (免费加载项)。

编辑:如果这不起作用,如果你可以使你的新path与旧path相同,你也可以尝试用二进制编辑器打开xls,并手动更新path。 我很久以前曾经做过这样的事情,当时一家公司改变了他的服务器和地图,我发现这是做这个工作最快捷的方法。 但是,如果更改pathstring的长度,则可能是因为string的长度存储在某处,所以不起作用。
我想我当时使用了Catch22 Hexedit 。

那么,经过一些黑客来消除XL2002(+)命令后,PivotPlayPlus插件终于在XL2000中为我工作了! 我现在已经成功迁移了2个工作簿。

http://www.pcreview.co.uk/forums/thread-1003719.php中解释了一个关键问题,即在XL2000中设置CommandText属性时存在255个字符的无证限制。 我改变的CommandText超过500字,所以我不得不缩短它。

这样做的最明显的方法是用SELECT *replaceCommandText中所有显式引用的SELECT参数,并从查询结尾删除现在多余的别名 – 但是当仔细检查从Access返回的参数是否有1:1匹配数据透视表的查询所期望的,我发现其中一个列已经从Access查询丢失 – 所以备份恢复的数据库是不完全兼容!

所以,我的方法似乎与XL2000成功是

  1. 备份您正在更新的电子表格。

1A。 (仅限第一次)。 安装加载项,将所有error handling改为“On Error Goto 0”,以便在出现错误时立即中断,然后运行加载项并逐步注释遇到的所有XL2002(+)命令,select如果遇到If命令,则variables默认为False的path。

  1. 使用外接程序在CommandText中显示查询SQL,标识正在使用的查询,然后转到Access数据库并使用以下代码来标识错误的外部链接并手动逐个纠正它们。

Sub PrintLinks()

 Dim i As Integer For i = 0 To CurrentDb.TableDefs.Count - 1 Debug.Print CurrentDb.TableDefs(i).Name, CurrentDb.TableDefs(i).Connect Next 

结束小组

Sub RefreshLink()

 Dim strLinkName As String Dim strNewLink As String Dim db As Object Set db = CurrentDb strLinkName = [the "CurrentDb.TableDefs(i).Name" item to be altered] strNewLink = [the new value of CurrentDb.TableDefs(i).Connect] Debug.Print db.TableDefs(strLinkName).Connect db.TableDefs(strLinkName).Connect = strNewLink db.TableDefs(strLinkName).RefreshLink Debug.Print db.TableDefs(strLinkName).Connect 

结束小组

  1. 使用更正的path(Access内)运行Access查询并查看返回的列。

  2. 将这些列名与Add-In中显示的查询CommandText进行比较。 如果它们不匹配,则尽可能使Access查询列完全匹配枢轴的CommandText列。

  3. 然后,您可以自由地将数据透视表的CommandText查询的SELECT部分​​更改为SELECT *,并从查询结尾删除现在多余的别名,并将其path更改为新的(此文本现在应该小于255个字符),然后更改加载项中的其他编辑框中的path。

  4. 在加载项中单击保存并退出。 现在testing电子表格可以使用屏幕对象本身的“[RightClick] Refreshdata”来刷新。 保存。

Interesting Posts