Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Глюк Екцеля ThisWorkbook.Close закрывает все др.книги без сохранения / 4 сообщений из 4, страница 1 из 1
30.07.2010, 16:03
    #36768853
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Екцеля ThisWorkbook.Close закрывает все др.книги без сохранения
Обнаружил у меня пользователь глюк Екцеля с закрытием книги.

При закрытии книги (ThisWorkbook.close) закрывается эта книга и молчком(!) не сохраняясь (!) все остальные.

Для примера даю файл. Откройте его, успейте за 20 сек создать еще один, внесите туда изменения и дождитесь срабатывания таймера. Закроется все, не спрашивая.

офис у меня 2003 (11.8324.8324)

Используется лишь код в книге

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Option Explicit

Private Sub Workbook_Open()
 

    Call ini_timer
 
End Sub

да код в модуле
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
Option Explicit

Public Declare Function SetTimer Lib "user32" _
                                 (ByVal hwnd As Long, _
                                  ByVal nIDEvent As Long, _
                                  ByVal uElapse As Long, _
                                  ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer Lib "user32" _
                                  (ByVal hwnd As Long, _
                                   ByVal nIDEvent As Long) As Long

Private lngTimerID As Long

 


Sub TimerProc(ByVal hwnd As Long, _
              ByVal uMsg As Long, _
              ByVal idEvent As Long, _
              ByVal dwTime As Long)
 
    Call deini_timer
 

    ThisWorkbook.Close SaveChanges:=True

End Sub

Public Sub deini_timer()
    lngTimerID = KillTimer(Application.hwnd, lngTimerID)
    If lngTimerID =  0  Then
        ' MsgBox "не убился таймер!"
    End If


End Sub
Public Sub ini_timer()
    lngTimerID = SetTimer(Application.hwnd, CLng( 1 ), CLng( 20000 ), AddressOf TimerProc)
    If lngTimerID =  0  Then
        ' MsgBox "Таймер не создался!"
        Exit Sub
    End If
End Sub

...
Рейтинг: 0 / 0
30.07.2010, 19:25
    #36769150
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Екцеля ThisWorkbook.Close закрывает все др.книги без сохранения
В 2010 такая же фигня
...
Рейтинг: 0 / 0
30.07.2010, 20:03
    #36769174
nilem
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Екцеля ThisWorkbook.Close закрывает все др.книги без сохранения
Senin Viktor,

Вот примерчик был. Не подойдет?
В ЭтаКнига
Код: plaintext
1.
2.
3.
4.
Private Sub Workbook_Open()
    Dim NextTick As Date
    NextTick = Now + TimeValue("00:00:20")
    Application.OnTime NextTick, "Закрываем"
End Sub
В стандартный модуль
Код: plaintext
1.
2.
3.
Sub Закрываем()
    MsgBox "Закрываемся"
    ThisWorkbook.Close SaveChanges:=True
End Sub
...
Рейтинг: 0 / 0
04.08.2010, 10:20
    #36774415
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Екцеля ThisWorkbook.Close закрывает все др.книги без сохранения
Ваш пример работает как и должно -закрывает только книгу.

И кто скажет мне в чем у них отличия, что ThisWorkbook.Close SaveChanges:=True начинает работать по разному?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Глюк Екцеля ThisWorkbook.Close закрывает все др.книги без сохранения / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]