powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как автоматизировать сохранение в Excel?
11 сообщений из 11, страница 1 из 1
Как автоматизировать сохранение в Excel?
    #33793264
Фотография Jetus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


Привет всем!

Есть такая проблема: у меня на работе стоит офис 2003 и когда я в Экселе открываю файлы более старших версий, то при закрытии Эсксель спрашивает: мол, пересохранить ли вам этот файл в более новом формате?

Когда за день открываешь таких файлов штук 100, то задалбывает жутко.
Как избавится от этой фигни?


______________________________
Never Surrender - Nothing Impossible!
...
Рейтинг: 0 / 0
Как автоматизировать сохранение в Excel?
    #33793436
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jetusкогда я в Экселе открываю файлы более старших версий?
Наверно ты имел ввиду младших версий.

Попробуй сделать кнопку на панели со следующим макросом или попробуй повесить на событие BeforeClose.

Код: plaintext
ActiveWorkbook.Close SaveChanges:=False 
...
Рейтинг: 0 / 0
Как автоматизировать сохранение в Excel?
    #33793876
Фотография Jetus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AshtonНаверно ты имел ввиду младших версий.
Да, именно. Я хотел сказать - более старых версий.

AshtonПопробуй сделать кнопку на панели со следующим макросом или попробуй повесить на событие BeforeClose.
Код: plaintext
ActiveWorkbook.Close SaveChanges:=False 

А какой в этом смысл? То же самое - каждый раз на кнопку давить!
...
Рейтинг: 0 / 0
Как автоматизировать сохранение в Excel?
    #33794613
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если не хочешь давить на кнопку, попробуй следующий вариант.

Сделай модуль класса (EventClassModule) в личной книге макросов Personal.xls.

Код: plaintext
1.
2.
3.
4.
5.
Public WithEvents app As Excel.Application

Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, _
  Cancel As Boolean)
    Wb.Close SaveChanges:=False
End Sub

Создай стандартный модуль, все там же.

Код: plaintext
1.
2.
3.
4.
Dim a As New EventClassModule

Public Sub Auto_Open()
    Set a.app = Application
End Sub
...
Рейтинг: 0 / 0
Как автоматизировать сохранение в Excel?
    #33795520
хорошо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
решение изящное, но пользователь должен знать, что все файлы теперь будут закрываться без сохранения
...
Рейтинг: 0 / 0
Как автоматизировать сохранение в Excel?
    #33798846
Фотография Jetus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хорошорешение изящное, но пользователь должен знать, что все файлы теперь будут закрываться без сохранения
Всё верно. Сначала надо определить, делались ли в файле изменения, и только если не делались, то поступать так, как пишет Ashton.

Посему вопрос: как определить, делались ли в книге изменения?
...
Рейтинг: 0 / 0
Как автоматизировать сохранение в Excel?
    #33799875
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй следующий вариант.

Код: 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.
Public WithEvents app As Excel.Application
Private col As New Collection

Private Sub app_WorkbookBeforeClose(ByVal Wb As Workbook, _
  Cancel As Boolean)
    Dim intI As Integer
    Dim strWbName As String
    Dim fChanged As Boolean
    
    On Error Resume Next
    
    strWbName = Wb.Name
    
    For intI =  1  To col.Count
        If col.Item(intI) = strWbName Then
            MsgBox "Данные изменены."
            fChanged = True
            Exit For
        End If
    Next intI
    
    If Not fChanged Then
        Wb.Close SaveChanges:=False
    End If
    
    col.Remove strWbName
End Sub

Private Sub app_SheetChange(ByVal Sh As Object, _
  ByVal Source As Range)
    On Error Resume Next
    
    col.Add Sh.Parent.Name, Sh.Parent.Name
End Sub
...
Рейтинг: 0 / 0
Как автоматизировать сохранение в Excel?
    #33800322
Фотография Jetus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

2 Ashton: thanks! Помогло! =)


______________________________
Never Surrender - Nothing Impossible!
...
Рейтинг: 0 / 0
Как автоматизировать сохранение в Excel?
    #33800680
Фотография Jetus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

Гм... почему-то ексель вылетает иногда из-за этого макроса.
Вот, подумал малость и сделал вот так:

Код: plaintext
1.
2.
Private Sub app_WorkbookOpen(ByVal Wb As Workbook)  
    If UCase(Wb.Name) <> "PERSONAL.XLS" Then Wb.Save
End Sub

Так намного проще, хоть и чуть дольше файлы открываются =)


______________________________
Never Surrender - Nothing Impossible!
...
Рейтинг: 0 / 0
Как автоматизировать сохранение в Excel?
    #33801682
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я у себя пробовал (Excel 2003 SP2), работало стабильно, не слетало. А ты я смотрю решил сразу же сохранять при открытии, тоже вариант.
...
Рейтинг: 0 / 0
Как автоматизировать сохранение в Excel?
    #33812856
Фотография Jetus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

Немного усовершенствовал свой макрос:
Код: plaintext
1.
2.
3.
Private Sub app_WorkbookOpen(ByVal Wb As Workbook)
    On Error Resume Next
    If Not Wb.Saved Then Wb.Save
End Sub

Теперь сохранения будут происходить только для тех файлов, которые сохранены в старых версиях Excel, а не для всех подряд.



______________________________
Never Surrender - Nothing Impossible!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как автоматизировать сохранение в Excel?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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