通过Excel VBA保存.xlsx文件,无需打开已保存的文件

3

我正在编写Excel VBA代码,用于创建Outlook邮件并附加Excel文件本身(xlsx)。

以下是我的代码行。

ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Date & " " & "Position Report Ver.2.xlsx", FileFormat:=51 

这段代码将xlsx文件保存到指定文件夹。

我只想复制保存xlsx文件。

但是我的代码在保存后自动打开了保存的文件(xlsx文件)。原始文件被关闭了。

宏应该在生成xlsx文件后运行,因为它应该通过vba宏附加到Outlook消息中。

但是,由于xlsx文件在保存后立即打开,所以我无法在保存后运行vba代码。

如何从xlsm保存为xlsx而不打开?

我在stackoverflow上搜索,但找不到解决方案。代码无法正常工作或无法保存为xlsx(仅为xlsm副本)...我找不到完美的答案...

2个回答

6
请尝试一下...
请记得检查文件名,因为我使用Format函数从文件名中删除了无效字符。
ThisWorkbook.Sheets.Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Format(Date, "mm.dd.yyyy") & " " & "Position Report Ver.2.xlsx", FileFormat:=51
ActiveWorkbook.Close

1
但是...它是如何工作的?这段代码只是复制了工作表,并没有包含重新打开xlsm文件的代码。但是使用这段代码后,xlsm文件会自动重新打开。我真的很想知道它是如何工作的... - 박영종
代码行 ThisWorkbook.Sheets.Copy 会添加一个新的工作簿,其中包含来自宏工作簿的所有工作表,然后 SaveAs 命令将新的工作簿保存为 .xlsx 扩展名并关闭它。因此,在最后,您会再次看到您的宏工作簿。我认为这就是您想要实现的目标。如果这解决了您最初的问题,请花一分钟时间接受答案并将您的问题标记为已解决。 - Subodh Tiwari sktneer
1
我的问题被标记为已解决了吗?抱歉,我是stackoverflow的新手,你的答案非常有帮助,谢谢。 - 박영종

0

@sktneer,这个方法更好。ThisWorkbook没有复制带有数据的工作表,只是打开了一个空白工作簿。但是ActiveWorkbook完成了任务。

ActiveWorkbook.Sheets.Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Format(Date, "mm.dd.yyyy") & " 
" & "Position Report Ver.2.xlsx", FileFormat:=51
ActiveWorkbook.Close

@Umair,你说的话有点奇怪。 :) - Subodh Tiwari sktneer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接