保存后在我的文档中创建 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++ 在我的应用程序的菜单栏中创建“保存当前设置”功能
如何在我的 Cordova 应用程序中创建 android.json?