Excel VBA – 想要最小化一个内置的对话框

tl,dr:我可以使Application.Dialogs(xlDialogSendMail).Show对话框可以最小化吗?

程序:我有一个解决scheme,自动创build一个文件,编译一个电子邮件,并附加文件。 用户可以查看并select发送电子邮件或closures而不发送。

问题:问题在于有些用户想要将内容复制/粘贴到自动编译电子邮件的正文中。 这是不可能的,原因有两个:

  • 编译电子邮件的例程使用剪贴板。
  • 该对话框不允许用户最小化(以便他们可以在编译电子邮件后复制内容)。

潜在的解决scheme:

  • 在电子邮件编辑过程中不要使用剪贴板。 我宁愿不这样做,因为它需要适度的代码重新编码。
  • 调用Outlook对象库来创build一个电子邮件。 我宁愿不要因为这个工具分发给大约110人,而且Excel和Outlook的版本不同,(Outlook Library)的兼容性问题也会猖獗。
  • 在电子邮件编辑例程之后pipe理剪贴板,使最后一个用户创build的“复制”再次处于活动状态。 这个解决scheme似乎可行但不理想。
  • 允许内置对话框为模态/可最小化,以便用户可以在编译后复制其内容。 这个解决scheme似乎最好

任何答案/想法/指导非常感谢!

最小化button对SendMail对话框没有意义,因为此对话框是模态的 – 也就是说,在继续在Excel中工作之前,它必须closures。 此外,这个Excel对话框对象是在一个lib中定义的,不容易通过VBA进行修改。

您的用户的解决方法是指示他们在打开对话框之前将文本复制到剪贴板缓冲区。 除非您的应用程序在创build邮件正文时破坏了剪贴板,否则这将用于粘贴。

如果在例程中需要剪贴板内容,则可以先将当前内容读出到文本variables中,然后在退出时将其恢复到剪贴板。

第一个想法是用.parent处理,但是我不知道是否有可能。 第二个想法是打开Excel的另一个实例,从那里调用Application.Dialogs(xlDialogSendMail),然后用户将能够切换到第一个Excel窗口。 但是当发送或closures电子邮件时,您必须closures第二个Excel实例。