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 ......?) 。也許這就解釋了兩臺電腦之間的區別。參見[this](http://stackoverflow.com/questions/29723694/excel-2013-windows-class-names/29724663#29724663)。 – Jeeped
謝謝,我們都運行32位版本的單詞,但他使用32位電腦,我使用64位電腦。 – skatun
只是FWIW:你可以使用GetObject(,「Excel.Application」),如果那個錯誤(429,我記得)它沒有運行。 –