Я пытаюсь выяснить, работает ли 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, как я помню), он не работает. –