- Remove From My Forums
-
Вопрос
-
I work on a network and sometimes move from building to buiding or work from home. When I try to open files sometimes I get the message that the file is already opened by another user…but that isn’t true. I think excel is not closing my files down
properly because the network still thinks they are open. Also, excel is taking 100% of processing space just to open a file, sometimes for a few seconds, sometimes more, but many times, excel won’t open because there is not enough space to open a small spreadsheet.
it’s been blamed on my spreadsheets and large spreadsheets, too many formulas, but it will blow up sometimes just opening a small file also.Please help me fix this. I have been making sure that I shut down when I go from one building to another or leave for home. but I am till getting this message. Once I have opened and closed about 4 or 5 files, I know pretty soon it
is going to deny being able to handle any more work.
-
04-11-2014, 11:49 AM
#1
Registered User
Excel Workbook Not Closing If I Don’t Save
Hello,
The issue I am having is when I try to close a workbook (one of the several that are open) it prompts me to save — I click «Don’t Save» because I do not want to save the file. Then the file will not close. I can still close other excel files within that excel window without saving them and they close fine. It just so happens to not close one file every once in a while. I kill the excel.exe process in order to get rid of it. This is time consuming though because sometimes I have up to ten Excel files open and have to save those before killing the process. It doesn’t seem to matter if I’m working on the network or the local drive.
I tried to run the command «taskkill /FI «WindowTitle eq Microsoft Excel — FILENAME» but it does not recognize the file name. I also tried to run the following VBscript as a .vbs file:
> set WshShell = WScript.CreateObject(«WScript.Shell»)
> WshShell.AppActivate «Microsoft Excel — FILENAME«
> WScript.Sleep 1000
> WshShell.SendKeys «^w»
> WScript.Sleep 2500The .vbs file prompts to close the specified file but when I click «Don’t Save» it still won’t close. It doesn’t force-close the specified file. Is there a way to kill the one file without saving it while keeping the other excel files open? Any help or insight will be much appreciated!!
On one specific PC I get this behavior where closing a window won’t free the corresponding xls/xslx file.
I can see the temporary file and cannot delete the original. Only when all windows are closed excel frees all file resources at once.
This is true for network shares as well as local folders.
I’m looking for an explanation so I’ll be able to circumvent or fix the problem.
I’d rule out the antivirus (Kaspersky) because it is the same on all PCs and doesn’t have suspicious settings.
asked Dec 6, 2017 at 14:57
2
Turns out the user had installed a misbehaving program without authorization, possibly without even knowing.
Right now the problem seems solved.
answered Dec 7, 2017 at 11:08
- Remove From My Forums
-
Question
-
I am creating a workbook using Transferspreadsheet in MS Access 2010 VBA Running under Windows 7 Enterprise. I am removing the headings from the workbook and copying a new row of headings with specific formating from another workbook
When I close the workbook in VBA and then try to open the workbook in Windows Explorer I get a message that the file is open. It is not clear what is causing the file to remain open. Here is my code:Private Sub cmdTemplate_Click()
Dim varFile As Variant
Dim strvarFile As String
Dim strRange As String
Dim strName As String
Dim strNewCol As String
Dim strLastCol As String
Dim strRangeOrigCols As String
Dim strRangeDestCols As String
Dim strPath As String
Dim strFullPath As String
Dim xlApp As Excel.Application
Dim xlWB1 As Excel.Workbook
Dim xlWB2 As Excel.Workbook
Dim wk1 As Worksheet
Dim wk2 As Worksheet
Dim rData As Range
Dim rData1 As Range
Dim rData2 As Range
Dim intLastCol As Integer
Dim intCol As Integer
Dim lst As Long
Dim lngColumn As Long
Dim bolFiletoProcess As BooleanstrPath = «J:ServiceMB EnrollmentENROLLMENTIREProd»
strName = Dir(strPath, vbNormal)
strFullPath = strPath & strName‘turn off alerts for query verification
DoCmd.Hourglass True
DoCmd.SetWarnings FalsebolFiletoProcess = False
Do While strName <> «»
If strName <> «CMS Universe Templates.xls» Then
Kill (strFullPath)
End If
strName = Dir
strFullPath = strPath & strName
Loop
If IsNull(Me.txtFrom) Or IsNull(Me.txtTo) Then
MsgBox «Please select a date range», vbOKOnly, «Queries»
Me.txtFrom.SetFocus
Else
varFile = «J:ServiceMB EnrollmentENROLLMENTIREProdCMS Universe Template_» & Format(Date, «mmddyyyy»)
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _
«qryCMSUniverseTemplate», varFile
strvarFile = varFile & «.XLS»
‘Open workbook that was the results of Transferspreadsheet
Set xlWB1 = Workbooks.Open(strvarFile, , False)
Set wk1 = xlWB1.Worksheets(«qryCMSUniverseTemplate»)
wk1.Activate
strName = ActiveSheet.Name
Rows(«1:1»).Select
strName = ActiveSheet.Name
intLastCol = xlLastCol(strName)
strLastCol = ColumnNumberToLetter(intLastCol)
‘Delete current headings
Selection.Delete Shift:=xlUp
‘Insert new line for headings from CMS Universe Template
Rows(«1:1»).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Set rData1 = xlWB1.Sheets(«qryCMSUniverseTemplate»).Range(«A1:AH1»)
‘Open CMS Universe Templates that has column headings
Set xlWB2 = Workbooks.Open(«J:ServiceMB EnrollmentENROLLMENTGAugustIRE DatabaseDevelopmentCMS Universe Templates.xls», , False)
Set wk2 = xlWB2.Worksheets(«IRE»)
wk2.Activate
For intCol = 1 To intLastCol
strNewCol = ColumnNumberToLetter(intCol)
strRangeOrigCols = strNewCol & «2» & «:» & strNewCol & «2»
strRangeDestCols = strNewCol & «1» & «:» & strNewCol & «1»
xlWB2.Worksheets(«IRE»).Range(strRangeOrigCols).Copy _
Destination:=xlWB1.Worksheets(«qryCMSUniverseTemplate»).Range(strRangeDestCols)
Next intCol
DoEvents
xlWB2.Close
Set xlWB2 = Nothing
wk1.Activate
xlWB1.Save
xlWB1.Close
Set xlWB1 = Nothing
MsgBox «Done», vbOKOnly, «Create Template»
End If
DoCmd.Hourglass False
DoCmd.SetWarnings True
End Sub
Answers
-
Hi gaugust,
Please try to close Excel calling the
Quit method of the Application class from the Excel object model. Does it help?-
Marked as answer by
Thursday, January 23, 2014 11:56 AM
-
Marked as answer by
-
You never created nor referenced an instance of the Excel application — though you declared a variable for it — so an Excel instance was created behind the scenes, and that is remaining open. In general, when automating Excel, you need to qualify
*every* object reference, or you will often get this problem. Write it like this:Set xlApp = New Excel.Application 'Open workbook that was the results of Transferspreadsheet Set xlWB1 = xlApp.Workbooks.Open(strvarFile, , False) Set wk1 = xlWB1.Worksheets("qryCMSUniverseTemplate") wk1.Activate strName = xlApp.ActiveSheet.Name xlApp.Rows("1:1").Select strName = xlApp.ActiveSheet.Name intLastCol = xlLastCol(strName) strLastCol = ColumnNumberToLetter(intLastCol) 'Delete current headings xlApp.Selection.Delete Shift:=xlUp 'Insert new line for headings from CMS Universe Template xlApp.Rows("1:1").Select xlApp.Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Set rData1 = xlWB1.Sheets("qryCMSUniverseTemplate").Range("A1:AH1") 'Open CMS Universe Templates that has column headings Set xlWB2 = xlApp.Workbooks.Open("J:ServiceMB EnrollmentENROLLMENTGAugustIRE DatabaseDevelopmentCMS Universe Templates.xls", , False) Set wk2 = xlWB2.Worksheets("IRE") wk2.Activate For intCol = 1 To intLastCol strNewCol = ColumnNumberToLetter(intCol) strRangeOrigCols = strNewCol & "2" & ":" & strNewCol & "2" strRangeDestCols = strNewCol & "1" & ":" & strNewCol & "1" xlWB2.Worksheets("IRE").Range(strRangeOrigCols).Copy _ Destination:=xlWB1.Worksheets("qryCMSUniverseTemplate").Range(strRangeDestCols) Next intCol DoEvents xlWB2.Close Set xlWB2 = Nothing wk1.Activate xlWB1.Save xlWB1.Close Set xlWB1 = Nothing xlApp.Quit
Set xlApp = Nothing
I may have overlooked some references, and I don’t know what’s happening in the functions you call, but I trust you get the idea.
Dirk Goldgar, MS Access MVP
Access tips: www.datagnostics.com/tips.html-
Marked as answer by
Luna Zhang — MSFT
Thursday, January 23, 2014 11:55 AM
-
Marked as answer by
Badamyan Пользователь Сообщений: 72 |
#1 21.07.2016 14:40:19
Изменено: Badamyan — 21.07.2016 15:08:59 |
||
Badamyan, И в чём, собственно, вопрос? Изменено: РОБОТ_РОБИН — 21.07.2016 14:45:58 |
|
Badamyan Пользователь Сообщений: 72 |
простите я впервые в этом форуме |
Ts.Soft Пользователь Сообщений: 576 |
#4 21.07.2016 14:56:54 Попробуйте так:
Не стреляйте в тапера — он играет как может. |
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#5 21.07.2016 14:59:25
Ну а нормальное название сформулировать это разве мешает? VBA — и что? Прикрепленные файлы
|
||
Badamyan Пользователь Сообщений: 72 |
#6 21.07.2016 15:02:15 окей Юрий, спасибо
Изменено: Badamyan — 21.07.2016 15:04:53 |
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#7 21.07.2016 15:08:00 Не исправили стартовое сообщение…
|
||
Badamyan Пользователь Сообщений: 72 |
Юрий так тоже не будет работать, активным считаеться тот файл в котором работает макрос, при таком коде он и будет закрываться Изменено: Badamyan — 21.07.2016 15:12:25 |
Hugo Пользователь Сообщений: 23249 |
#9 21.07.2016 15:18:55
это вообще может быть любой файл…
Тогда всегда с этим wb можно делать что угодно. |
||||
Ts.Soft Пользователь Сообщений: 576 |
#10 21.07.2016 15:19:28
Нет, активным считается именно активный файл, а тот в котором работает макрос называется ThisWorkbook Не стреляйте в тапера — он играет как может. |
||
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#11 21.07.2016 15:19:34
Проверяли? |
||
Badamyan Пользователь Сообщений: 72 |
Hugo,Огромное спасибо ) сработал |
Hugo Пользователь Сообщений: 23249 |
Тот в котором содержится макрос называется ThisWorkbook. |
Badamyan Пользователь Сообщений: 72 |
Юрий М,да, но не сработал, закрывает тот файл в котором макрос |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
У меня сработал. |
Ts.Soft Пользователь Сообщений: 576 |
#16 21.07.2016 15:34:21 Сейчас проверил код:
работает
даёт ошибку Subscript out of range. Получается, что x не является объектом Workbook? Не стреляйте в тапера — он играет как может. |
||||
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#17 21.07.2016 15:35:38
нет. Получается что в x содержится полный путь до книги, а не только её имя, как того требует коллекция Workbooks. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
Ts.Soft Пользователь Сообщений: 576 |
The_Prist, спасибо. Учту на будущее. Не стреляйте в тапера — он играет как может. |
Badamyan Пользователь Сообщений: 72 |
Юрий М, получился и по вашему, наверника запустил макрос не с правильного файла |
Badamyan Пользователь Сообщений: 72 |
The_Prist,а как получить только имя ? |
Ts.Soft Пользователь Сообщений: 576 |
#21 21.07.2016 15:51:24
можно так
Проверил — работает Изменено: Ts.Soft — 21.07.2016 15:53:53 Не стреляйте в тапера — он играет как может. |
||||
Badamyan Пользователь Сообщений: 72 |
Ts.Soft,а что делает InStrRev ? находит в X ? ведь в нем несколько -ов Изменено: Badamyan — 21.07.2016 15:55:16 |
Мотя Пользователь Сообщений: 3218 |
#23 21.07.2016 15:57:17
Изменено: Мотя — 21.07.2016 16:03:02 |
||
The_Prist Пользователь Сообщений: 14181 Профессиональная разработка приложений для MS Office |
#24 21.07.2016 15:57:22
но лучше использовать метод Hugo — надежнее. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
Ts.Soft Пользователь Сообщений: 576 |
Badamyan, InStrRev ищет заданный символ с конца строки, но возвращает порядковый номер от начала, т.е. в данном случае находит последний «», к его номеру добавляется единица и с этой позиции до конца выделяется подстрока Не стреляйте в тапера — он играет как может. |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
#26 21.07.2016 17:57:31
Вариант:
|
||||
Hugo Пользователь Сообщений: 23249 |
#27 21.07.2016 19:26:56 Зачем всё усложнять?
|
||