通过excel vba保存.xlsx文件,无需打开保存的文件

通过excel vba保存.xlsx文件,无需打开保存的文件,excel,vba,Excel,Vba,我正在制作excel vba代码,用于生成outlook邮件,并为邮件附加excel文件本身(xlsx) 下面一行是我的代码 ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Date & " " & "Position Report Ver.2.xlsx", FileFormat:=51 此代码将xlsx文件保存到特定文件夹 我只想保存复制的xlsx文件 但我的代码会在保存后立即自动打开保存的文件(xlsx文件)。并

我正在制作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副本)。。。我找不到完美的答案…

请尝试一下

记得检查文件名,因为我使用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

@sktneer,这更有效。此工作簿没有复制包含数据的工作表,只打开了一个空白工作簿。但是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

但是它是如何工作的?此代码只是复制了工作表,不包含重新打开xlsm文件的代码。但xlsm文件会自动重新打开,并使用此代码。我真想知道它是如何工作的。
thiswoolk.Sheets.Copy
行添加一个新工作簿,其中包含宏工作簿中的所有工作表,然后SaveAs命令以.xlsx扩展名保存新工作簿并将其关闭。最后,您将再次看到您的宏工作簿。我想这就是你想要实现的。如果你的原始问题得到解决,请花一分钟接受答案,将你的问题标记为已解决。我的问题是否标记为已解决?对不起,我是stackoverflow的新手,您的回答非常有帮助,谢谢。@Umair您说的有些奇怪。:)