【问题标题】:A copy of Excel Addin is created in My Documents after saving保存后在我的文档中创建 Excel 插件的副本
【发布时间】:2015-02-18 13:15:41
【问题描述】:

我有一个通过 OLE 自动化创建新 Excel 对象的应用程序(在 IBM Notes 中运行,使用 Lotusscript 等)。在我的应用程序中,我创建了一个新的工作簿并将其保存到一个临时文件夹(我将其保存为 Excel 工作表,不带宏 -> 类型 52),以便返回文件。像这样:

tmp_abc1234.xlsx

然后我以编程方式在 Excel 中打开文件。我有一个 Excel 插件(文件名为“Teamoffice.xlam”,加载了一些宏所在的位置,我将在自定义保存操作栏按钮中触发。在此保存方法中,我还调用了保存函数:

Call ActiveWorkbook.Save
Call ThisWorkbook.Save

由于某种原因,Excel 在“我的文档”文件夹中创建了一个名为“Teamoffice.xlsm”的文件。文件本身无法在 Excel 中打开(“错误的文件格式错误”)——当然,它是一个插件!

如果我从我的应用程序中只打开一个 Excel 文档,这会很有效。如果我打开第二个(或更多)我会遇到麻烦:每次我保存那些辅助打开的(或新创建的)文档时,Excel 都会询问我是否要覆盖那个“Teamoffice.xlsm”文件。

我将 VBA 代码添加到 ma 宏中,以检测此文件是否存在并尝试将其删除。当然没有运气,因为 Excel 的第一个实例已经锁定了该文件。虽然在提交 Excel 问题对话框时覆盖文件是可行的,但我不希望出现该问题。

在不带 OLE 的情况下单独使用 Excel 时,它的行为并非如此。

由此行为引发的几个问题:

  1. Excel 为什么要创建这个文件?我可以阻止它这样做吗?
  2. 如何删除文件,即使 Excel 有句柄或
  3. 我可以告诉 Excel 不要处理这个文件(如果它在那里)并让我杀死它吗?
  4. 我可以隐藏问题对话框并始终说“是的,覆盖它”吗?

Office 版本是 2010 - 这让我快疯了......所以提前谢谢! p.s.:我不是VBA专业人士,所以请尽可能详细:-)

【问题讨论】:

  • 乍一看,你所有的问题都来自你的代码。我建议重新访问代码。或者,如果您想获得有价值的反馈,请指定用于完成工作的代码。
  • 你的意思是什么代码?创建OLE对象时的流程?

标签: vba excel ms-office ole


【解决方案1】:

我注意到了

ThisWorkbook.Save

是原因。如果我省略它,则不会创建任何文件。奇怪的是,这将插件文件保存为 xlsm 文件。

【讨论】:

    猜你喜欢
    • 2017-12-06
    • 2019-10-20
    • 1970-01-01
    • 2020-06-03
    • 2023-04-03
    • 2015-05-18
    • 2018-07-02
    • 1970-01-01
    • 2021-05-15
    相关资源
    最近更新 更多