Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 是否有通过VBA打开文档副本的方法?_Excel_Vba - Fatal编程技术网

Excel 是否有通过VBA打开文档副本的方法?

Excel 是否有通过VBA打开文档副本的方法?,excel,vba,Excel,Vba,我对VBA比较陌生,我需要解决我遇到的问题 目前我有两个excel文档-一个是用户输入数据的表单,然后发送到第二个文档,作为此信息的数据库。我的问题是,当人们在数据库中查找数据时,无法将其发送到第二个文档,因为它是打开的,并且存在覆盖错误 我的目的是将数据库位置隐藏在网络驱动器中,以便无法找到它,这意味着访问我的唯一方法是通过第一个文档上的按钮 当按下“打开”按钮访问数据库时,是否有一种方法可以打开文档的副本而不是实际文档本身,以便仍然可以发送数据?因此,这里有几个选项: a) 使用实际的数据库

我对VBA比较陌生,我需要解决我遇到的问题

目前我有两个excel文档-一个是用户输入数据的表单,然后发送到第二个文档,作为此信息的数据库。我的问题是,当人们在数据库中查找数据时,无法将其发送到第二个文档,因为它是打开的,并且存在覆盖错误

我的目的是将数据库位置隐藏在网络驱动器中,以便无法找到它,这意味着访问我的唯一方法是通过第一个文档上的按钮


当按下“打开”按钮访问数据库时,是否有一种方法可以打开文档的副本而不是实际文档本身,以便仍然可以发送数据?

因此,这里有几个选项:

a) 使用实际的数据库。这并不是为了解决这个特定的问题,而是因为从长远来看,在excel中创建一个“数据库”通常是一个糟糕的想法。但我知道这并不总是可能的,而且在很多情况下这是过度的,所以

b) 将“数据库”工作簿设置为“共享工作簿”。共享工作簿有自己的一系列问题(即无法编辑某些方面,如其中的VBA、条件格式等)。但是,如果它严格用于读写数据,它就可以工作。它还有自己的版本控制,所以这很好

c) 你最初问的问题。正如您所说,这非常简单,您可以复制文档,最好是在用户的本地文件夹中。您可以使用FSO执行此操作(请参阅)


最后一种方法的唯一问题是,您需要某种方法来跟踪用户何时关闭该临时文件,以便将其删除(如果您绝对不想留下任何痕迹)。否则,您可以将其保留,并在用户每次按下“查看数据库”按钮时覆盖相同的文件。

因此,您在这里有几个选项:

a) 使用实际的数据库。这并不是为了解决这个特定的问题,而是因为从长远来看,在excel中创建一个“数据库”通常是一个糟糕的想法。但我知道这并不总是可能的,而且在很多情况下这是过度的,所以

b) 将“数据库”工作簿设置为“共享工作簿”。共享工作簿有自己的一系列问题(即无法编辑某些方面,如其中的VBA、条件格式等)。但是,如果它严格用于读写数据,它就可以工作。它还有自己的版本控制,所以这很好

c) 你最初问的问题。正如您所说,这非常简单,您可以复制文档,最好是在用户的本地文件夹中。您可以使用FSO执行此操作(请参阅)


最后一种方法的唯一问题是,您需要某种方法来跟踪用户何时关闭该临时文件,以便将其删除(如果您绝对不想留下任何痕迹)。否则,您可以保留该文件,并在用户每次按下“查看数据库”按钮时覆盖该文件。

您可以使用
在代码中打开该文件的副本。添加
而不是
。打开
,但您无法更改用户单击的打开按钮的功能。您的另一个选项是将文件设置为只读,以便强制用户打开该文件的只读副本。您可以使用
.Add
而不是
。open
在代码中打开该文件的副本,但您不能更改用户单击的“打开”按钮的功能。您的另一个选项是将文件设置为只读,以便强制用户打开该文件的只读副本。