经常使用office办公的友友,可能在打开同名文件时,遇到了下面的错误提示,很抱歉,excel无法同时打开两个同名的工作簿。
复现问题:简单复现一下这个问题,在当前文件夹下创建 1.xlsx, 然后创建目录 a, 在目录 a 下创建 1.xlsx, 2.xlsx 两个文件。三个文件路径如下所示,
$ find ./ -name "*.xlsx"
./1.xlsx
./a/1.xlsx
./a/2.xlsx
然后打开 1.xlsx, 此时再打开目录 a 下的 1.xlsx 就会出现上面的错误提示,但是打开 a 目录下的 2.xlsx 就没有问题。
为什么不能打开两个同名的文件呢?虽然从任务栏中可以看到,打开的是多个窗口,但是其实这两个窗口并不是独立的,它们共享着很多东西,下面我们深入查看下。
打开其中一个工作簿的开发者工具,进入 VIsual Basic 可以看到,另一个窗口的文件信息也在此处展示。可见,虽然是两个窗口,但并不独立,同时从展示的信息中可以看出 Excel 是按文件名来区分这两个工作簿的,所以当我们再打开同样文件名的工作簿时,就报错了。
这是Office内部的原因造成的,在VBA中可以用文件名来访问工作簿的,若是可以打开同样文件名的两个文件,下面的代码究竟是访问的那个那?这在VBA中是不允许的。
有没有方法可以同时打开两个同名的工作呢?Set WB1 = Workbooks(“1.xlsx”)
当然有,重命名这里就不考虑了,因为重命名后就不再是同名文件了。
因为上面的多个 Excel 窗口,属于同一个 Excel 实例。因此可以使用另外一个 excel 实例就可以了,这样两个 Excel 实例是独立的,互不影响。
操作步骤如下,在任务栏已打开的 Excel 处,鼠标右击,然后再弹出的菜单处,按下 Alt 键同时,鼠标点击选择 Excel
这时,会弹出如下的窗口询问是否启动新的新的excel实例,此时选择是,
这时就可以在新打开的 Excel实例中打开另一个 1.xlsx 的文件了,看看状态栏是不是已经成功打开同名文件了。