Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2014, 09:29   #1
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию Запрет режима преобразования файлов excel 2007 для excel 2003

Здравствуйте Уважаемые программисты!
Подскажите пожалуйста, есть ли решение для следующей ситуации:
На компьютере пользователя установлен Excel 2003 и "FileFormatConverters" (это утилита MS для открытия файлов office 2007 версии в режиме преобразования).
Есть следующий код в книге Excel2007 (файл XLSM):

Private Sub Workbook_Open()
If Application.Version Like "12*" Then
'...
Else
MsgBox "Из-за проблем с совместимостью, файл будет закрыт.", vbCritical
Dim wb As Workbook: Application.ScreenUpdating = False
For Each wb In Workbooks
If wb Is ThisWorkbook Then wb.Close False
Next wb
End If
End Sub

Когда я открываю эту книгу xlsm через Excel 2003 (в котором нет других открытых книг), то код работает и книга xlsm закрывается.
Но когда в Excel 2003 уже есть открытые книги, то при открытии xlsm код не работает - книга xlsm остается открытой.
Подскажите пожалуйста, как поправить код? Возможно дело в том, что когда книга xlsm открывается в excel 2003, то сначала происходит ее преобразование?
Заранее спасибо.
ольгаг вне форума Ответить с цитированием
Старый 28.03.2014, 10:01   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

так попробуйте
Код:
Private Sub Workbook_Open()
    If Val(Application.Version) > 11 Then ' Excel 2007 и новее
        '...
    Else
        MsgBox "Из-за проблем с совместимостью, файл будет закрыт.", vbCritical
        ThisWorkbook.Close False ' закрываем этот файл
    End If
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 28.03.2014, 10:27   #3
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Спасибо работает!
Подскажите пожалуйста, как поправить то что у меня после действия в этом коде:
MsgBox "Из-за проблем с совместимостью, файл будет закрыт.", vbCritical
ThisWorkbook.Close False ' закрываем этот файл

в моей книге на событии "Workbook_BeforeClose" стоит вывод окна:

Select Case MsgBox("Вы хотите СОХРАНИТЬ изменения в файле '" & Me.Name & "' перед его закрытием ?", vbYesNo + vbQuestion, "Выход")
Case vbYes: ActiveWorkbook.Save
Case vbNo: ActiveWorkbook.Saved = True
End Select

Как можно обойти (запретить) этот Msgbox (при закрытии книги) или инициировать нажатие "Нет"?
Спасибо!
ольгаг вне форума Ответить с цитированием
Старый 28.03.2014, 11:32   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
в моей книге на событии "Workbook_BeforeClose" стоит вывод окна:
а зачем это окно?
вроде, Excel сам предлагает сохранить файл при закрытии, без подобного кода...


Для решения проблемы, в обработчике события Workbook_BeforeClose,
первой строкой добавьте проверку версии Excel:
Код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Val(Application.Version) > 11 Then ThisWorkbook.Saved = True: Exit Sub
    
    ' далее ваш код
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 28.03.2014, 12:20   #5
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Спасибо, решение найдено!
ольгаг вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
excel 2007, Регистрация библиотеки от excel 2003 maksim_serg Microsoft Office Excel 1 12.01.2011 14:05
Excel 2003-2007 ??? Александр82 Microsoft Office Excel 6 04.10.2010 19:19
Совместимость Excel 2003 и 2007 1134 Microsoft Office Excel 9 19.07.2010 14:08
Как запретить запуск программы на VBA Excel 2003 в Excel 2007 kovalevskivf Microsoft Office Excel 2 15.05.2009 16:47