保存后在我的文档中创建 Excel 插件的副本

Posted

技术标签:

【中文标题】保存后在我的文档中创建 Excel 插件的副本【英文标题】:A copy of Excel Addin is created in My Documents after saving 【发布时间】: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 时,它的行为并非如此。

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

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

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

【问题讨论】:

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

我注意到了

ThisWorkbook.Save

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

【讨论】:

以上是关于保存后在我的文档中创建 Excel 插件的副本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 RtdServer 在 C# 中创建实时 Excel 自动化加载项?

使用 C++ 在我的应用程序的菜单栏中创建“保存当前设置”功能

excel vba 不遵循保存路径并保存在我的文档中

如何在我的 Cordova 应用程序中创建 android.json?

如何在 Capella 中创建服务并在我的 M2DOC Word 文档中调用它?

怎样在我的文档里“控制面板里的文件夹选项中创建关联”?