使用VBA创build电子邮件后,请重新回到Excel

我有一个VBAmacros,它执行以下操作:

  1. 创build一个报告,并将其保存到主目录。 closures报告
  2. 创build各种电子邮件,附加报告(不发送电子邮件)
  3. Msgbox显示显示该过程已完成

问题是,一旦整个过程完成,我希望用户知道它已经完成,但是这个代码不会把焦点返回给excel(我希望这会是问题)

Windows(the_current_window).Activate Worksheets(currentQuoteSheet).Select 

最后创build的电子邮件就是屏幕上的内容。 只有当我点击菜单栏上的excel图标,msgbox才会出现。 所以用户只是在等待完成(当它有,实际上:()

任何想法如何确保最后一封电子邮件后msgbox显示没有用户点击Excel的创build?

尝试

 sub doSomething() 'do something AppActivate "Microsoft Excel" End Sub 

虽然这在一定程度上起作用,但它不会激活MSGbox以允许按下键盘上的y / n(您可以使用鼠标)。

如果您重复执行任务并且不想抓住鼠标,则允许键盘互动。 testing的Office 2013(64位)(删除PtrSafe,如果你是32位)

 Private Declare PtrSafe Function MessageBox _ Lib "User32" Alias "MessageBoxA" _ (ByVal hWnd As Long, _ ByVal lpText As String, _ ByVal lpCaption As String, _ ByVal wType As Long) _ As Long Sub Test 'Call showwindow(ActiveWorkbook.Name) AppActivate "Excel" 'I need this to retain the focus retval = MessageBox(&O0, "Do you want to process", "My Question", vbYesNo + vbSystemModal) End Sub 

你有没有尝试通过名字来调用你的工作簿? 就像是:

 Workbooks("EXCEL WORKBOOK NAME.XLS").Activate