我试图通过使用VB自动运行宏而不打开Excel来自动执行该过程。
我测试了宏,如果打开工作簿,它可以正常工作。但是,当我通过VB脚本运行宏时,Maro在ThisWorkbook.EnvelopeVisible = True
处停止。有人知道为什么吗?
我的宏
Sub sendEmail()
MsgBox "sendEmail Start!" 'Appears when run VBs
ThisWorkbook.EnvelopeVisible = True
MsgBox "EnvelopeVisible True!" 'did not appear when run VBs
With ThisWorkbook.Sheets("sheet1").MailEnvelope
MsgBox "MailEnvelope Prepare!"
.Introduction = "Message"
.Item.To = "To who it may concern"
.Item.Subject = ""
.Item.Send
MsgBox "MailEnvelope Send!"
End With
ThisWorkbook.EnvelopeVisible = False
MsgBox "sendEmail Done!"
End Sub
我的VB
Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Run "'C:\Users\UserName\Desktop\Folder\Ver 6.xlsm'!AutoEmail.sendEmail"
objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing
我正在运行VB来激活宏
答案 0 :(得分:2)
您需要在VBS中添加以下行:
objExcel.Visible = True
之后
Set objExcel = CreateObject("Excel.Application")
它基于您的问题描述提供的简单线索。
Excel宏在从Excel打开并运行时有效。
如果从VBS运行
当我查看有关此属性的MSDN说明时
https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbook-envelopevisible-property-excel
它说
如果电子邮件撰写标题和信封工具栏都可见,则为true。读/写布尔。
因此,要使其工作,我们需要使父对象可见,即Excel.Application。