2010-06-07 79 views
2

http://support.microsoft.com/kb/288902/en-us访问ADP/MDB在GetObject(“文档名称”)调用中使用的正确“文档名称”是什么?

您还可以连接到特定的实例 如果你知道在那种情况下打开的 文档的名称。对于 例如,如果一个Excel的实例是 名为 第二册打开的工作簿上运行,以下代码将 成功,即使 它不是最早的实例 推出该实例:

Set xlApp = GetObject("Book2").Application 

这个例子适用于Excel,主要是因为“文档名称”与文件名几乎相同。我需要为Access工作。

我有用户运行不同访问应用程序(.ADP)的多个实例,我需要得到一个具有特定名称。我不知道完整的文件路径,否则我可以做一个简单的

Set app = GetObject("c:\my\app\myapp.adp", "Access.Application") 

目前,我去打电话

Set app = GetObject(, "Access.Application") 

和检查返回Application.Name。如果它是好的,我用它来调用它的一些功能,如果不是它失败的话。我听说过运行对象表,但是因为我必须在VBScript中获取对象,所以它有点太多的API调用。

底线: 访问ADP在GetObject(“文档名称”)调用中使用的正确“文档名称”是什么以及它返回的是哪种类型的对象?

+0

Excel的单个实例可以打开多个文档,但Access的单个实例一次只能打开一个数据库。如果您需要打开多个数据库,则必须打开多个Access实例。我不确定在两个Access实例中打开相同的MDB/ACCDB/ADP会发生什么情况。 – 2010-06-07 20:15:37

+0

是的,我确实有多个Access实例,每个实例都用于不同的数据库/ ADP。这就是为什么GetObject(,“Access.Application”)让我无处可去/可能返回错误的实例。我只是不知道数据库的路径,但我知道(希望)数据库(我创建它们)的“文档名称”,它不需要路径(在Excel中以这种方式工作)。 – Oliver 2010-06-08 07:44:39

回答

0

你可能想阅读:http://support.microsoft.com/kb/147816

不幸的是,它看起来像“文件名称”必须是MDB文件,所以如果你不知道文件的路径,你不会是能够使用“文档名称”。

除了Excel每个实例可以有多个文档这一事实之外,Excel还可以阻止您打开两个具有相同名称的文档,即使它们位于不同的文件夹中,并且您正在Excel的不同实例中打开它们。另一方面(为了解决David-W-Fenton的评论),Access允许你打开同一个数据库的多个实例(更不用提不同的数据库同名),只要你不需要以独占模式打开任何实例。

这也进一步表明,Excel中注册其文件在ROT的方法是从Access这样做的方式非常不同。

+0

过了一段时间,从那时起我们改变了ADP的安装和启动方式,所以我们现在知道调用GetObject(sFilename)的需要时ADP的完整路径。 – Oliver 2011-04-28 09:04:09

1

说回这个问题,因为@phoog发布了一个答案,它发生,我认为,因为访问可以在一个一次只能打开一个数据库,你需要看一下访问的每个实例,并检查其CurrentDB.Name 。现在,与ADP,我不知道你,而不是检查什么,但也许这是CurrentProject.Path。

我不相信任何的实际解决原来的问题,这似乎想不仅是文件名,找到实例,但我不认为,即使工作这将是一个不错的主意。您可以轻松拥有独立的Access应用程序,该应用程序返回相同的应用程序名称和文件名,但存储在文件系统中的不同位置。