宏停在`ThisWorkbook.EnvelopeVisible = True`

时间:2018-01-26 06:08:32

标签: excel vba excel-vba

我试图通过使用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来激活宏

1 个答案:

答案 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。