保存后,在“我的文档”中创建Excel Addin的副本

时间:2015-02-18 13:15:41

标签: vba excel-vba ms-office ole excel

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

tmp_abc1234.xlsx

然后我以编程方式在Excel中打开文件。我有一个Excel Addin(文件名是" Teamoffice.xlam"加载了一些宏驻留我将在自定义保存操作栏按钮中触发。在这个保存方法中我也调用保存功能:

Call ActiveWorkbook.Save
Call ThisWorkbook.Save

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

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

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

Excel在单独使用OLE时不会表现得像那样。

此行为导致的几个问题:

  1. 为什么Excel会创建此文件?我可以阻止它这样做吗?
  2. 即使Excel上有句柄或
  3. ,如何删除文件
  4. 我可以告诉Excel没有这个文件的句柄(如果它在那里)并让我杀了它?
  5. 我可以取消问题对话框并始终说"是,覆盖它"?
  6. Office版本是2010年 - 它让我疯了......所以提前谢谢! p.s。:我不是VBA职业选手,所以请尽量详细说明: - )

1 个答案:

答案 0 :(得分:1)

我注意到了

ThisWorkbook.Save

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