我试图保存一个启用Word Macro的模板,然后通过电子邮件发送生成的文件,但是保存(并发送)为.docm的文件无法打开。它引发此错误:
"We're sorry. We can't open B.docm because we found a problem with its contents"
我需要做一些事情来“转换”文档吗?找不到任何相关信息,每个人似乎都同意我保存文档的方式很好。
这是我正在使用的代码:
Private Sub CommandButton1_Click()
'Save Document
Dim wdApp As Word.Application
Set wdApp = GetObject(, "Word.Application")
wdApp.ActiveDocument.SaveAs "H:\Word\B.docm"
'Send Email
Dim outlook As outlook.Application
Dim maiMessage As outlook.MailItem
Set outlook = New outlook.Application
Set maiMessage = outlook.CreateItem(olMailItem)
With maiMessage
.Subject = "Sent"
.Recipients.Add Name:="name@company.com"
.Attachments.Add Source:="H:\Word\B.docm"
.Send
End With
End Sub
更多信息:
- If I save the document by normal means (File > Save as > .docm), it works.
- If I save the document using the macro but with .docx extension, it also works.
答案 0 :(得分:0)
您应该先检查SaveAs方法。
您应该已经注意到,当您键入'。'时。在ActiveDocument之后,Intellisense选项列表中不存在SaveAs。相反,您会得到SaveAs2。
这样做的原因是不推荐使用SaveAs,并且已被SaveAs2取代。旧方法仍然可用,但是不能保证在Office / VBA的将来版本中继续存在该方法。
SaveAs2本身仅向SaveAs方法添加了一个新选项(兼容模式)。 SaveAs2或选择兼容性的功能都不能解决您的问题。相反,您必须使用F1。
在VBA IDE中,将光标置于任何关键字上,然后按F1键将打开该关键字的MS帮助页面(如果存在关键字)。如果您在SaveAs上按F1键将不会获得任何帮助,请说是一个通用页面,但是如果在SaveAs2上按F1则将获得此帮助页面。
当您查看帮助页面时,您会发现SaveAs2方法的第二个参数是'FileFormat',
保存文档的格式。可以是任何WdSaveFormat常量。要以另一种格式保存文档,请为FileConverter对象的SaveFormat属性指定适当的值。
仅提供文件名时,SaveAs(现在为SaveAs2)没有抱怨的事实意味着该方法提供了默认选项,这很可能是“将该文档另存为Word格式的文档”选项(wdFormatDocumentDefault)。
为将文档另存为启用宏的单词模板,您需要指定枚举常量wdFormatXMLTemplateMacroEnabled。
例如
wdApp.ActiveDocument.SaveAs "H:\Word\B.docm", wdFormatXMLTemplateMacroEnabled
如果您记录了一个宏,在该宏中您将文档另存为模板以查看Word在相同情况下会做什么(当然并不总是有帮助),那么您也将获得此选项。
Sub Macro1()
'
' Macro1 Macro
'
'
ChangeFileOpenDirectory _
"C:\Users\user1\Documents\Custom Office Templates\"
ActiveDocument.SaveAs2 FileName:= _
"C:\Users\user1\Documents\Custom Office Templates\test.dotm", FileFormat _
:=wdFormatXMLTemplateMacroEnabled, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False, CompatibilityMode:=15
End Sub
祝您一切顺利。
答案 1 :(得分:0)
由于从模板创建的文档不会包含任何宏,因此将其保存为docm格式毫无意义。此外,除非您在SaveAs行中实际指定文件格式,否则,您将获得的只是本机格式(docx),在这种情况下,您需要做的就是更改扩展名以适合:
wdApp.ActiveDocument.SaveAs“ H:\ Word \ B.docx”
,并将其作为电子邮件附件的参考。