投稿日 | : 2005/08/10(Wed) 13:47 |
投稿者 | : YK |
Eメール | : |
URL | : |
タイトル | : エクセルのメッセージをフックしたい |
こんにちは。
下記のようなコードでエクセルを起動しています。
API宣言は省きます。
SetWindowPos で Form を最前面表示をさせています。
それで、エクスプローラー等で同じファイルをクリックして
開こうとするとエクセルのメッセージが出ます。
"xxxx.xls は既に開いています。・・・・・・・" 等
(普通はしないと思いますがヤル人がいるのです。)
ところが Form のサイズが大きい為、このメッセージボックスが
フォームの後ろに隠れてしまいます。
このメッセージボックスを最前面表示させるか、
フォームをミニマムにしたいのですがどのようにしたら良いのでしょうか。
Dim xlsApp As Excel.Application
Dim wbDt As Excel.Workbook
Private Sub Command1_Click()
Dim strFname As String
Dim lngRtnCd As Long
lngRtnCd = SetWindowPos(Me.hWnd, _
HWND_NOTOPMOST, _
0, _
0, _
0, _
0, _
SWP_NOSIZE Or SWP_NOMOVE)
Set xlsApp = New Excel.Application
xlsApp.Visible = True
strFname = xlsApp.GetOpenFilename("Excel File (*.xls), *.xls")
If strFname = "False" Then
xlsApp.Quit
Set xlsApp = Nothing
Exit Sub
End If
Set wbDt = xlsApp.Workbooks.Open(strFname)
wbDt.Worksheets(1).[A1].Value = " "
' 最前面表示
lngRtnCd = SetWindowPos(Me.hWnd, _
HWND_TOPMOST, _
0, _
0, _
0, _
0, _
SWP_NOSIZE Or SWP_NOMOVE)
End Sub