![]() |
Close second instance of excel
Hi!
I have a data gathering programme that when I click the csv button it creates the data in a csv file and opens it (always R.CSV) in a second instance of excel. In my first instance of excel I have some code that extracts the data from the csv file and formats it differently. At present I have to close the second instance of excel manually then by code I open in the first instance, retrieve the data, close it and kill it, ready for the next lot of data. The problem is if anyone forgets to close the second instance of excel I cannot kill it. What I would ideally like to do is in the first instance of excel, test if there is a second instance running and if so close it. Is this possible? TIA Neil |
Close second instance of excel
Hi again,
I am using Peter Beache's code as follows to test if there is another instance running but I don't know how to close it if it is Option Explicit Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, lpWindowName As Any) As Long Private Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) As Long Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Private Const GW_HWNDNEXT = 2 Sub DupeXLRunning() Dim lRet& Dim StrRet$ Dim nLen& lRet& = FindWindow("XLMain", ByVal 0&) ' Now this will always return a valid HWND, being the handle of this instance of XL Do lRet& = GetNextWindow(lRet&, GW_HWNDNEXT) If lRet& = 0 Then Exit Do StrRet$ = Space$(100) nLen& = GetClassName(lRet&, StrRet$, 100) StrRet$ = Left$(StrRet$, nLen&) If UCase$(StrRet$) = "XLMAIN" Then MsgBox "Duplicate version of XL found" Exit Sub End If Loop MsgBox "Only one version of XL running" End Sub Neil "Neil" wrote in message ... Hi! I have a data gathering programme that when I click the csv button it creates the data in a csv file and opens it (always R.CSV) in a second instance of excel. In my first instance of excel I have some code that extracts the data from the csv file and formats it differently. At present I have to close the second instance of excel manually then by code I open in the first instance, retrieve the data, close it and kill it, ready for the next lot of data. The problem is if anyone forgets to close the second instance of excel I cannot kill it. What I would ideally like to do is in the first instance of excel, test if there is a second instance running and if so close it. Is this possible? TIA Neil |
Close second instance of excel
Hi again,
I am using Peter Beache's code as follows to test if there is another instance running but I don't know how to close it if it is You can send a WM_CLOSE message to the hWnd in question. See modified code below. Regards, Vic Eldridge Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, _ lpWindowName As Any) As Long Private Declare Function GetNextWindow Lib "user32" Alias "GetWindow" _ (ByVal hwnd As Long, _ ByVal wFlag As Long) As Long Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _ (ByVal hwnd As Long, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _ (ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long Private Const GW_HWNDNEXT = 2 Private Const WM_CLOSE = &H10 Sub DupeXLRunning() Dim lRet& Dim StrRet$ Dim nLen& lRet& = FindWindow("XLMain", ByVal 0&) ' Now this will always return a valid HWND, ' being the handle of this instance of XL Do lRet& = GetNextWindow(lRet&, GW_HWNDNEXT) If lRet& = 0 Then Exit Do StrRet$ = Space$(100) nLen& = GetClassName(lRet&, StrRet$, 100) StrRet$ = Left$(StrRet$, nLen&) If UCase$(StrRet$) = "XLMAIN" Then MsgBox "Duplicate version of XL found." PostMessage lRet&, WM_CLOSE, 0&, 0& Exit Sub End If Loop MsgBox "Only one version of XL running" End Sub |
All times are GMT +1. The time now is 05:49 PM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com