Sorry, I thought you were setting a reference to the actual workbook object. Re your ado connection, have you tried using the 'mode' property? In your 'with/end with' section (but before .open), you could maybe add
.Mode = adModeReadWrite
I'd expect that to fail if the file could not be opened with read and write permissions. I've used something similar to ensure that a database is always opened exclusively.
Or after you've opened the file, you could return/test the value of the mode property. If the returned value was, for example, adModeRead, it would indicate that you had read-only permission which would indicate that somebody else has the file open. I've never used it with connection to an Excel file but it should work.....