Written by Allen Wyatt (last updated November 13, 2023)
This tip applies to Excel 2007, 2010, 2013, 2016, 2019, and Excel in Microsoft 365
Kim's workbook is saved on a network drive and multiple users access it all day long to update the information. Sometimes she tries to access the workbook and it is already open by someone else. Excel used to tell her who had the workbook open so she could go to them and ask them to close it. Now Excel just says the same, never-changing person has it open, even when it is someone else who has it open. Kim wonders why this would be happening all of a sudden.
To figure out why this is happening, it is necessary to understand how Microsoft handles the "naming" of who has a workbook open in Excel. When you open a workbook that nobody else has open, Excel creates a "temp file" that is used to indicate you have that file open; it contains your username, as configured within Excel. When someone else comes along and tries to open the same workbook, they are shown your username, as stored in that temp file.
If you are seeing the same name over and over again, then there are two possibilities. The most likely possibility is that you have a bunch of people all on the same network and none of them have configured their copies of Excel with their unique usernames. This isn't as uncommon as you might imagine; Office 365 subscriptions are notorious for this. During installation, you aren't asked for a username (like you were in previous versions of Office), so the program defaults to a generic name. If people don't go in and change the name, then everyone will have the same name, and it is the same name shown when Excel tries to open a workbook that someone else already has open.
The solution to this problem, of course, is to have everyone customize their version of Excel to include their username. Follow these steps:
Figure 1. The General options of the Excel Options dialog box.
Remember that each person on the network needs to do this. Now, when they start using Excel workbooks on the network, it is the name specified in step 3 that is stored in the temp file and displayed to anyone else trying to open the workbook.
Earlier I mentioned there were two possibilities. The other one is that, somehow, the temp file associated with a particular workbook isn't getting deleted as it should. (It should be automatically deleted when the original user closes the workbook.) This can be solved by having everyone close Excel, and then someone with administrative privileges going in and deleting any temp files located.
Deleting the files is easy, once you can find them. I mention this because the files are marked as hidden system files (by Office), and they are not normally visible when you are navigating through your various folders. You can configure Windows to display these types of files by following the steps detailed in this tip.
You can tell that a file is a lock file by the fact that it starts with a tilde and a dollar sign. For instance, if you are working on the workbook MyBook.xlsx, then the lock file for that workbook would be ~$MyBook.xlsx. Provided that nobody is actually using MyBook.xlsx, you can delete ~$MyBook.xlsx with no problems.
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (13566) applies to Microsoft Excel 2007, 2010, 2013, 2016, 2019, and Excel in Microsoft 365.
Program Successfully in Excel! John Walkenbach's name is synonymous with excellence in deciphering complex technical topics. With this comprehensive guide, "Mr. Spreadsheet" shows how to maximize your Excel experience using professional spreadsheet application development tips from his own personal bookshelf. Check out Excel 2013 Power Programming with VBA today!
When you start up Excel, you should eventually see a blank workbook, ready for you to work with. If you don't, if you see ...
Discover MoreIt is a difficult task, in Excel, to determine if a workbook is the target of any external links. This tip examines some ...
Discover MoreWant to create a printed record of the properties associated with a workbook? There is no easy way to do it in Excel. ...
Discover MoreFREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
2022-05-14 12:15:14
Tomek
Clarification of my previous comment.
Two Comments:
1. The file ~$Name.xl?? can be open in a text editor and you will see the name or, if shared, names of people who are using the related spreadsheet. Sometimes you need to copy it first as the system may not allow you to open a file that is used by other processes.
2. Such "temp file" is not created when the spreadsheet is located on OneDrive or SharePoint. However such files can be usually opened by more than one person at the same time. ***I meant, files from OneDrive or SharePoint.***
2022-05-14 12:12:03
Tomek
Two Comments:
1. The file ~$Name.xl?? can be open in a text editor and you will see the name or, if shared, names of people who are using the related spreadsheet. Sometimes you need to copy it first as the system may not allow you to open a file that is used by other processes.
2. Such "temp file" is not created when the spreadsheet is located on OneDrive or SharePoint. However such files can be usually opened by more than one person at the same time.
2022-05-11 11:27:58
J. Woolley
My Excel Toolbox includes the following dynamic array function:
=ListUserStatus([SkipHeader])
This function lists Name, last activity (date/time), and type (exclusive/shared) for each user that has the workbook open.
In older versions of Excel you can use ListUserStatus with the SpillArray function like this:
=SpillArray(ListUserStatus([SkipHeader]))
SpillArray will determine and populate the spill range for its array expression argument, simulating a dynamic array.
See https://sites.google.com/view/MyExcelToolbox/
2022-05-10 07:40:32
RKeev
Like ur code, i was using a txt file named Log and the below, but if they don't enable macros.........it's moot.
Private Sub Workbook_Open()
If InStr(LCase(Application.UserName), "yourname") > 0 Then Exit Sub 'so it doesn't do it for you
Dim SLUSH As String
On Error GoTo Procend
SLUSH = ThisWorkbook.Name
Open "C:\urfolder\Log.txt" For Append As #1
Print #1, SLUSH & ", Started " & Now & " " & Application.UserName
Close #1
Procend:
End Sub
2022-05-10 07:19:13
ESeb
One solution with a specific sheet, "who open the workbook."
Sub Workbook_Open()
Call SheetLOG("HereSheetNameLoginOfTheWorkbook", "Entrance")
'And the rest of the Sub
End Sub
'---------------------------------------------------------------------------------------
' Procedure : Sub SheetLOG(Wks As Sheets, sInOut As String)
' Author : ESeb
' Date : 2007...
' Purpose : populates an array with connection data : hour, date, author, PC, Version...
'---------------------------------------------------------------------------------------
' Version Date Descriptions
' 1.00.00 2007-05-14 Code d'origine
' 1.00.01 2017-11-16 Correction gros bug empêchant l'affichage sur la feuille
'---------------------------------------------------------------------------------------
Sub SheetLOG(sSheetName As String, sInOut As String)
Dim RngDernLign
On Error Resume Next
'--- Goto the last line in column "A"
Set RngDernLign = Worksheets(sSheetName).Range("A1").End(xlDown)
'--- Populate the Listobject
RngDernLign.Offset(1, 0).Value = sInOut
RngDernLign.Offset(1, 1).Value = Now()
RngDernLign.Offset(1, 2).Value = Environ("USERNAME")
RngDernLign.Offset(1, 3).Value = Format(ThisWorkbook.CustomDocumentProperties("Version").Value, "00\.00\.00")
RngDernLign.Offset(1, 4).Value = Environ("COMPUTERNAME")
'--- Clear
Set RngDernLign = Nothing
End Sub
a solution ?
ESeb
Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.
FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2024 Sharon Parq Associates, Inc.
Comments