VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -