Excel 是否有通过VBA打开文档副本的方法?
我对VBA比较陌生,我需要解决我遇到的问题 目前我有两个excel文档-一个是用户输入数据的表单,然后发送到第二个文档,作为此信息的数据库。我的问题是,当人们在数据库中查找数据时,无法将其发送到第二个文档,因为它是打开的,并且存在覆盖错误 我的目的是将数据库位置隐藏在网络驱动器中,以便无法找到它,这意味着访问我的唯一方法是通过第一个文档上的按钮Excel 是否有通过VBA打开文档副本的方法?,excel,vba,Excel,Vba,我对VBA比较陌生,我需要解决我遇到的问题 目前我有两个excel文档-一个是用户输入数据的表单,然后发送到第二个文档,作为此信息的数据库。我的问题是,当人们在数据库中查找数据时,无法将其发送到第二个文档,因为它是打开的,并且存在覆盖错误 我的目的是将数据库位置隐藏在网络驱动器中,以便无法找到它,这意味着访问我的唯一方法是通过第一个文档上的按钮 当按下“打开”按钮访问数据库时,是否有一种方法可以打开文档的副本而不是实际文档本身,以便仍然可以发送数据?因此,这里有几个选项: a) 使用实际的数据库
当按下“打开”按钮访问数据库时,是否有一种方法可以打开文档的副本而不是实际文档本身,以便仍然可以发送数据?因此,这里有几个选项: a) 使用实际的数据库。这并不是为了解决这个特定的问题,而是因为从长远来看,在excel中创建一个“数据库”通常是一个糟糕的想法。但我知道这并不总是可能的,而且在很多情况下这是过度的,所以 b) 将“数据库”工作簿设置为“共享工作簿”。共享工作簿有自己的一系列问题(即无法编辑某些方面,如其中的VBA、条件格式等)。但是,如果它严格用于读写数据,它就可以工作。它还有自己的版本控制,所以这很好 c) 你最初问的问题。正如您所说,这非常简单,您可以复制文档,最好是在用户的本地文件夹中。您可以使用FSO执行此操作(请参阅)
最后一种方法的唯一问题是,您需要某种方法来跟踪用户何时关闭该临时文件,以便将其删除(如果您绝对不想留下任何痕迹)。否则,您可以将其保留,并在用户每次按下“查看数据库”按钮时覆盖相同的文件。因此,您在这里有几个选项: a) 使用实际的数据库。这并不是为了解决这个特定的问题,而是因为从长远来看,在excel中创建一个“数据库”通常是一个糟糕的想法。但我知道这并不总是可能的,而且在很多情况下这是过度的,所以 b) 将“数据库”工作簿设置为“共享工作簿”。共享工作簿有自己的一系列问题(即无法编辑某些方面,如其中的VBA、条件格式等)。但是,如果它严格用于读写数据,它就可以工作。它还有自己的版本控制,所以这很好 c) 你最初问的问题。正如您所说,这非常简单,您可以复制文档,最好是在用户的本地文件夹中。您可以使用FSO执行此操作(请参阅)
最后一种方法的唯一问题是,您需要某种方法来跟踪用户何时关闭该临时文件,以便将其删除(如果您绝对不想留下任何痕迹)。否则,您可以保留该文件,并在用户每次按下“查看数据库”按钮时覆盖该文件。您可以使用
在代码中打开该文件的副本。添加而不是。打开,但您无法更改用户单击的打开按钮的功能。您的另一个选项是将文件设置为只读,以便强制用户打开该文件的只读副本。您可以使用.Add
而不是。open
在代码中打开该文件的副本,但您不能更改用户单击的“打开”按钮的功能。您的另一个选项是将文件设置为只读,以便强制用户打开该文件的只读副本。