将Excel窗口返回到前景

时间:2014-05-08 08:13:58

标签: excel excel-vba outlook office-2007 vba

我从上到下搜索了互联网,但我找不到解决方案。在我的Excel工作簿中,我想从Outlook导入联系人。这很好,没有任何问题。我使用Outlook.ActiveWindow.Activate将GAL置于前台,并使用Outlook.Explorers.Item(1).WindowState = olMinimized最小化Outlook。我知道这不是一个非常干净的解决方案,但除非没有其他Outlook Windows打开,否则一切正常。

现在我的问题:
当用户有多个打开的Outlook窗口(例如新的邮件对话框等)时,我无法将我的Excel应用程序带回Foreground。联系人的导入仍然可以正常工作。 GAL通过单击按钮进入前景。
我尝试了以下代码片段,但它们并没有真正起作用。

   Dim AppTitle As String
   AppTitle = Application.Caption
   '
   'some code
   '
   AppActivate AppTitle

另一个尝试是模块中的这个功能

   Public Declare Function SetForegroundWindow Lib "user32" _
   (ByVal hWnd As Long) As Long

在我的按钮功能中调用它

   Dim AppXL As Object
   Set AppXL = CreateObject("Excel.Application")
   '
   'some code
   '
   SetForegroundWindow AppXL.hWnd

我也尝试使用此代码段

   Excel.Application.Visible = True
   Excel.Application.ActiveWindow.Activate

没有任何帮助。唯一发生的事情是任务栏中闪烁的Excel图标。我希望你能帮助我解决这个问题。

1 个答案:

答案 0 :(得分:3)

假设此代码在Excel工作簿中,它只是:

   SetForegroundWindow Application.hWnd

而不是创建新的应用程序实例。