Excel'in çalışıp çalışmadığını öğrenmeye çalışıyorum çünkü excel dosyaları oluşturmayı bitirdikten sonra excel'i kapatıp kapatmamam gerektiğini bilmem gerekiyor.Excel çalışmakta olup olmadığını öğrenin
Benim yöntemim benim için iyi çalışıyor, ancak başka bir kullanıcıda başarısız oluyor ve neden başarısız olduğunu bilmiyorum. Bahse girerim, while döngüsünün sonsuza dek sürecek olması. Bundan kaçınmak için bir sayaç ekleyelim mi yoksa Excel'in çalışıp çalışmadığını öğrenmenin daha iyi bir yolu var mı? Yani burada
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
olanlar Win32 API çağrıları, 32-bit ve 64-bit Office yüklemelerinin için farklı ithal edilmek zorunda (User32 ...?) . Belki de bu iki bilgisayar arasındaki farkı açıklar. Bkz. [This] (http://stackoverflow.com/questions/29723694/excel-2013-windows-class-names/29724663#29724663). – Jeeped
Teşekkürler, ikimizin de 32bit versiyonunu kullanıyoruz ama 32 bit pc kullanıyor ve 64bit pc kullanıyoruz. – skatun
Sadece FWIW: GetObject (, "Excel.Application") kullanabilirsiniz ve bu hatalar (429, hatırladığım gibi) çalışmıyorsa. –