0
私はExcelを実行しているかどうかを調べようとしています。なぜなら、Excelファイルを作成した後、私はExcelを閉じるべきかどうかを知る必要があるからです。Excelが実行されているか調べる
私の方法は問題なく動作していますが、別のユーザーでは失敗し、なぜ失敗したのかわかりません。私の賭けは、whileループが永遠に実行されることです。だから私はこれを避けるためのカウンタを追加するか、Excelが実行されているかどうかを調べるためのより良い方法はありますか?だからここ
Function ListWins(Optional title = "*", Optional Class = "*") As Boolean
Dim hWndThis As Long
ListWins = True
hWndThis = FindWindow(vbNullString, vbNullString)
While hWndThis
Dim sTitle As String, sClass As String
sTitle = Space$(255)
sTitle = Left$(sTitle, GetWindowText(hWndThis, sTitle, Len(sTitle)))
sClass = Space$(255)
sClass = Left$(sClass, GetClassName(hWndThis, sClass, Len(sClass)))
If sTitle Like title And sClass Like Class Then
ListWins = False
Debug.Print sTitle, sClass
End If
hWndThis = GetWindow(hWndThis, GW_HWNDNEXT)
Wend
End Function
これらのWin32 API呼び出しが32ビットと64ビットのOfficeのインストールのために別々にインポートする必要があり(がUser32 ...?) 。おそらくそれは2台のコンピュータの違いを説明します。 [this](http://stackoverflow.com/questions/29723694/excel-2013-windows-class-names/29724663#29724663)を参照してください。 – Jeeped
ありがとう、我々は両方の32ビット版の単語を実行するが、彼は32ビットのPCを使用し、私は64ビットのPCを使用します。 – skatun
ちょうどFWIW:GetObject(、 "Excel.Application")を使用して、そのエラー(429、思い出したように)が実行されていない場合。 –