ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Catching an Open Excel File with VBScript (https://www.excelbanter.com/excel-programming/293788-re-catching-open-excel-file-vbscript.html)

onedaywhen

Catching an Open Excel File with VBScript
 
Have you tried using the JET OLE DB provider i.e.

XLconn.ConnectionString = "Source=" & FileName & _
";Extended Properties='Excel 8.0'

--

"nate axtell" <naxtell at progeny dot net wrote in message ...
I'm programming with VBScript and Javascript in an ASP page (NOT .NET).
I am openning an ADO connection with the Excel driver, then recording the
contents of the file to a recordset.

FileName = "path to file..."
Set XLconn = CreateObject("ADODB.Connection")
XLconn.ConnectionString = "DBQ=" & FileName & ";DRIVER={Microsoft Excel
Driver (*.xls)};"
XLconn.Open
XLsql = "SELECT * FROM [Sheet1$]"
Set XLrs = CreateObject("ADODB.Recordset") 'Recreate the recordset
XLrs.cursortype = 3
XLrs.open XLsql, XLconn

'use the rs
'then code to close and set the connection and recordset to Nothing

Here is my dilemma: If the Excel file that I am trying to read is already
open when the web page loads I do not receive any errors. But once the page
is done loading and I close the Excel file, any time I try to open any Excel
file afterwards the grid section will not appear. It is almost as if some
of the drivers get confused because the file was open when made the
connection to it. This doesn't happen if I have other Excel files open when
loading the webpage, only if I have the specific file open that I'm trying
to read. Does anyone know of a way to check if the file is already being
used?
--nate


nate axtell

Catching an Open Excel File with VBScript
 
Yes, the the Jet driver gives the same problem.

"onedaywhen" wrote in message
om...
Have you tried using the JET OLE DB provider i.e.

XLconn.ConnectionString = "Source=" & FileName & _
";Extended Properties='Excel 8.0'

--

"nate axtell" <naxtell at progeny dot net wrote in message

...
I'm programming with VBScript and Javascript in an ASP page (NOT .NET).
I am openning an ADO connection with the Excel driver, then recording

the
contents of the file to a recordset.

FileName = "path to file..."
Set XLconn = CreateObject("ADODB.Connection")
XLconn.ConnectionString = "DBQ=" & FileName & ";DRIVER={Microsoft Excel
Driver (*.xls)};"
XLconn.Open
XLsql = "SELECT * FROM [Sheet1$]"
Set XLrs = CreateObject("ADODB.Recordset") 'Recreate the recordset
XLrs.cursortype = 3
XLrs.open XLsql, XLconn

'use the rs
'then code to close and set the connection and recordset to Nothing

Here is my dilemma: If the Excel file that I am trying to read is

already
open when the web page loads I do not receive any errors. But once the

page
is done loading and I close the Excel file, any time I try to open any

Excel
file afterwards the grid section will not appear. It is almost as if

some
of the drivers get confused because the file was open when made the
connection to it. This doesn't happen if I have other Excel files open

when
loading the webpage, only if I have the specific file open that I'm

trying
to read. Does anyone know of a way to check if the file is already

being
used?
--nate




onedaywhen

Catching an Open Excel File with VBScript
 
The usual way to check this is to try to open the file with exclusive
locking and then ascertain after the event whether you actually *do*
have exclusive locking. This is easy when Excel is automated (e.g.
using VBA Open keyword).

However, I don't know of a reliable way of doing the same using ADO.
You can attempt to get exclusive locks on the connection i.e.

XLconn.Mode = 12 ' adModeShareExclusive

and apparently get it even if the when the workbook is open i.e. no
run-time errors and no ADO errors. You can then open a recordset with
pessimistic locking e.g.

rs.LockType = 2 ' adLockPessimistic

and apparently get that too i.e. no errors.

It's only when you try to do something which requires exclusive
locking that the truth emerges e.g.

XLconn.Execute "CREATE TABLE DropMe (Col1 INT)"

when an error occurs.

--

"nate axtell" <naxtell at progeny dot net wrote in message ...
Yes, the the Jet driver gives the same problem.

"onedaywhen" wrote in message
om...
Have you tried using the JET OLE DB provider i.e.

XLconn.ConnectionString = "Source=" & FileName & _
";Extended Properties='Excel 8.0'

--



All times are GMT +1. The time now is 05:29 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com