15. september 2009 - 07:57Der er
4 kommentarer og 1 løsning
Tølle antal excel applikationer der køre
Hej Jeg ønsker at tælle antaller af excel applikationer der er åben, IKKE antallet af åbne regneark. Jeg skal bruge det i forbindelses med automtisk åbning og lukning af excel hvor det engang imellem ikke lykkes mig at lukke det forrige regneark/excel application ned. mvh oleelo
du kan bruge windows api (virker ikke på mac) I nedenstående vil count indeholde antallet af vinduer, der hedder noget med "Excel" (koden kan nok forbedres lidt):
Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Boolean Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long Dim count As Integer Private Sub Test() count = 0 'call the Enumwindows-function EnumWindows AddressOf EnumWindowsProc, ByVal 0& End Sub Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean Dim WindowName As String, Ret As Long Ret = GetWindowTextLength(hwnd) WindowName = Space(Ret) GetWindowText hwnd, WindowName, Ret + 1 If InStr(WindowName, "Excel") Then count = count + 1 End If 'continue enumeration EnumWindowsProc = True End Function
Hej Tak for respons Jeg har prøver at få koden til at virke, med uden held da det er sort for mig hvad der sker mht API. Jeg har kopieret koden med i et excel kode modul og kørt ?Test fra Immediate-windouet og der komme bare et linjeskift/tomme felter Har desuden prøvet at tilføje en linje tilsidst i Test: Msgbox"Antal" & Count Intet sker Har du en ide til hvad der kan være galt , har excel 2003 mvh oleelo
Det virker i windows XP med Excel2000, men jeg har ikke her gjort noget med count-variablen. Prøv dette i stedet for:
Function antalexcel() count = 0 'call the Enumwindows-function EnumWindows AddressOf EnumWindowsProc, ByVal 0& antalexcel = count End Function
Du kan f.eks. indsætte formlen =antalexcel() i en celle i regnearket eller kalde den fra en VBA-procedure
Selve koden er ikke så kompliceret, EnumWindows sørger for at kalde EnumWindowsProc automatisk for hvert vindue, og i koden undersøger jeg navnet på vinduet. Hvis navnet indeholder "Excel" antager jeg at det er en Excel-applikation og lægger 1 til count
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.