为什么我的宏会打开以前的excel工作表?

为什么我的宏会打开以前的excel工作表?,excel,vba,Excel,Vba,下面是我的代码,它按预期工作,但有一个小错误,当我在另一个工作簿中使用它时,它会打开我编写宏的excel文件。我知道在代码中设置activeworkbook可以解决这个问题,但我感觉有些东西仍然在引用原始文件,我不知道它到底在哪里可以做到这一点。目标是在自定义功能区中使用它与同事共享(我知道我可以使用外接程序,这样可以避免问题,但出于安全原因,我的工作场所不允许我将共享驱动器设置为外接程序的目录) 如果你和我一样,遇到了我上面描述的问题,你有几个选择: 创建Excel加载项 创建个人工作簿宏 创

下面是我的代码,它按预期工作,但有一个小错误,当我在另一个工作簿中使用它时,它会打开我编写宏的excel文件。我知道在代码中设置activeworkbook可以解决这个问题,但我感觉有些东西仍然在引用原始文件,我不知道它到底在哪里可以做到这一点。目标是在自定义功能区中使用它与同事共享(我知道我可以使用外接程序,这样可以避免问题,但出于安全原因,我的工作场所不允许我将共享驱动器设置为外接程序的目录)


如果你和我一样,遇到了我上面描述的问题,你有几个选择:

  • 创建Excel加载项

  • 创建个人工作簿宏

  • 创建This工作簿宏,但请记住关闭原始工作簿

  • 如果受信任的位置包含共享驱动器(我的位置没有),或者您将使用同一台计算机,以便保存在C驱动器上的宏不成问题(我的同事使用不同的计算机),则1和2可以正常工作。3允许您将xlsm文件保留在共享驱动器中,因为它未绑定到受信任的位置,如果您愿意,可以在自定义功能区按钮中使用它。您必须做的唯一一件事是输入以下代码行:

    我想出了一个对我有效的解决方案,但这是一种奇怪的方式。在子项结束之前,关闭原始宏的工作簿

    Workbooks("your_original_macro_workbook.xlsm").Close
    

    一些用户建议只编辑您的UI自定义文件,但它对我来说从来都不起作用。虽然我怀疑活动工作簿中出现了一些奇怪的情况,但在脚本结束之前关闭原始文件似乎是可行的,尽管这有点不雅

    如何运行宏?运行原始文件时是否打开了它?你也应该澄清你的问题中“工作表”的用法,你是指工作簿吗?对,我的意思不是说工作簿。我在另一个工作簿中创建了上面的脚本,但计划通过自定义功能区按钮在其他工作簿中使用它。但是,当我在另一个工作簿中使用它时,它会打开我在其中创建脚本的原始工作簿。当我运行原始文件时,我没有打开它,我不想打开它,我只想让脚本在我使用它的当前工作簿中运行。宏是保存到模块还是“ThisWorkbook”中?此外,如果要将变量指定给工作表,则没有理由激活它们。实际上最好不要激活它们。只需分配变量,然后在不激活工作表的情况下使用变量操作数据。我明白了!谢谢,我将它设置为“个人工作簿”,它解决了我的问题。“ThisWorkbook”只适用于原始文件打开时,所以我想将其设置为“个人工作簿”。实际上,它现在似乎声称找不到它?我确保目录是正确的。此外,如果我不激活并指定正在使用的工作簿,它也会影响原始工作簿。
    Workbooks("your_original_macro_workbook.xlsm").Close