Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как определить условия пересчета при загрузке / 16 сообщений из 16, страница 1 из 1
18.10.2008, 10:03:33
    #35602198
Valll
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
Помогите, кто может.

Как определить при загрузке эксель-файла в его автомакросе какой вид пересчета таблиц в Экселе установлен: автоматический или ручной?
...
Рейтинг: 0 / 0
18.10.2008, 12:39:39
    #35602303
IgrokB
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
При загрузке файла нужно только определить, или установить?
...
Рейтинг: 0 / 0
18.10.2008, 19:37:37
    #35602541
Valll
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
В файл с таблицей встроен макрос, который выполняется автоматически при загрузке файла. Хотелось бы, чтобы этот макрос определял какой режим пересчета установлен в программе Эксель и по определенному условию (радиокнопки в таблице с переключением режимов) изменял бы этот режим пересчета. Если что непонятно еще уточню. Спасибо за участие.
...
Рейтинг: 0 / 0
18.10.2008, 21:03:36
    #35602616
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
Help:

Calculation property
Application.Calculation=ОписаниеxlAutomaticАвтоматическиxlSemiAutomaticАвтоматически кроме таблицxlManualВручную
Calculate method
To calculateFollow this example All open workbooksApplication.Calculate (or just Calculate) A specific worksheetWorksheets(1).Calculate A specified rangeWorksheets(1).Rows(2).Calculate
...
Рейтинг: 0 / 0
18.10.2008, 21:05:20
    #35602617
IgrokB
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
Может так, а еще лучше бы - файл примера...



If Application.Calculation = xlManual Then _

' Ваш код
Else
' Ваш код

End If
...
Рейтинг: 0 / 0
18.10.2008, 22:08:47
    #35602653
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
IgrokB
If Application.Calculation = xlManual Then _

' Ваш код
Else
' Ваш код

End If
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public CalculationState As Long

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.Calculation = CalculationOldState
End Sub

Private Sub Workbook_Open()
    CalculationOldState = Application.Calculation
    Application.Calculation = xlCalculationManual
    '.....
End Sub
...
Рейтинг: 0 / 0
19.10.2008, 07:59:29
    #35602759
Valll
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
IgrokB

Спасибо! Именно это я имел ввиду! Но что-то клинило в голове.


AndreTM
c вашим кодом пока не разобрался. Чувствую мысль глубокая, но пока не дохожу...

Public CalculationState As Long ' наверное CalculationOLDState ?

Private Sub Workbook_BeforeClose(Cancel As Boolean) ' объявляем переменную
Application.Calculation = CalculationOldState ' присваиваем
End Sub

Private Sub Workbook_Open() ' открывается книга - срабатывает макрос
CalculationOldState = Application.Calculation ' переменной присваивается (событие, метод?)
Application.Calculation = xlCalculationManual ' ... переключается на ручной пересчет
'.....
End Sub

Все понятно. Всем спасибо! Теперь держись!
...
Рейтинг: 0 / 0
19.10.2008, 09:33:47
    #35602767
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public CalculationOldState As Long ' Объявляем переменную

Private Sub Workbook_Open() ' событие открытия книги
    CalculationOldState = Application.Calculation ' в глобальную переменную заносим состояние пересчета
    Application.Calculation = xlCalculationManual ' устанавливаем нужное нам состояние
    '..... работаем
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean) ' событие закрытия книги
    Application.Calculation = CalculationOldState ' восстанавливаем состояние пересчета, что было при открытии
End Sub
Так понятнее?
...
Рейтинг: 0 / 0
25.11.2008, 20:13:04
    #35675150
Vadim Romanenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
Вот - сам пользуюсь этой штукой - переключение режимов пересчета. Однако время от времени наталкиваюсь на грабли - при выполнении строки
Код: plaintext
Application.Calculation = xlCalculationManual
или другого режима время от времени нарываюсь на ошибку:
авторRun-time error '1004':

Method 'Calculation' of object '_Application' failed.
Может кто сталкивался? Может кто подскажет, как бороть?
...
Рейтинг: 0 / 0
26.11.2008, 13:21:07
    #35676382
Vadim Romanenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
Неужель только у меня такая проблема возникает??
...
Рейтинг: 0 / 0
28.11.2008, 15:12:38
    #35682205
Vadim Romanenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
Укей. Поставлю вопрос по-другому :)
Может кто-то подскажет, при каких условиях можно менять режим пересчета формул в Excel? Есть ли какое-то влияние состояния документа (скрыт, свернут и проч) на возможность вызова метода Application.Calculation??
...
Рейтинг: 0 / 0
28.11.2008, 21:35:50
    #35683061
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
Посмотри в настройках пересчета открываемого файла. Если стоит Ручной пересчет и галочка на Итерациях, то убери галочку.
...
Рейтинг: 0 / 0
28.11.2008, 22:22:03
    #35683088
Vadim Romanenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
KL (XL)Посмотри в настройках пересчета открываемого файла. Если стоит Ручной пересчет и галочка на Итерациях, то убери галочку.

не, эту фишку по инету я нашел - у меня не тот случай.
единственное что - у меня документ скрыт когда я пытаюсь в нем пересчет переключать (меню Окно-Скрыть). И я заметил, что попасть в меню Сервис-Параметры нельзя в этом случае (неактивное оно)
...
Рейтинг: 0 / 0
14.12.2008, 16:30:28
    #35713254
Vadim Romanenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
Нашел, Как говориццо, себе - и спешу поделиться со всеми :) Оказывается, использование свойства Calculation, по моим наблюдениям, возможно только в том случае, если в Ёкселе открыт ХОТЯ БЫ один документ, и у него отображен ХОТЯ БЫ один лист. В противном случае установка данного свойства приводит к exception.
Как же его обойти? Да оказывается достаточно просто!!
Вот он - первосырец на сайте мелкомягких:
мелкомягкие для арабов
вот кусочек интересного сырца:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
' Auto_Open macros run automatically when you open the workbook.

Sub Auto_Open()

   With ThisWorkbook.Worksheets("Sheet1")
...
       .EnableCalculation = False

   End With

End Sub
Тобишь устанавливая в цикле указанное свойство для КОНКРЕТНОГО документа можно выставлять свойство автовычисления формул на листах. Тут же можно и придумать как в автомате одни листы пересчитывать, а другие - нет.
Умельцы набросали такой вот макросик на автооткрытие документа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Workbook_Open()
On Error GoTo err

Dim iWSheet As Worksheet
For Each iWSheet In Application.ActiveWorkbook.Worksheets
If iWSheet.Cells( 1 ,  1 ).Value = "Стоп" Then iWSheet.EnableCalculation = False _
                               Else iWSheet.EnableCalculation = True
Next

Exit Sub
err:
End Sub
спионерено тут

Таким чином, возможно, установка свойств автопересчета листа, а не приложения, является более правильным, поскольку не гадит людям в случае ошибки при повторном открытии Ёкселя для других целей (открываем документ - ставим ручной пересчет - автопересчет не включаем по какой-то причине - при следующем открытии любого другого документа имеем грабли в виде ручного пересчета формул)
...
Рейтинг: 0 / 0
14.12.2008, 16:33:27
    #35713257
Vadim Romanenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
сорри за путание в ссылках-урлах :)
...
Рейтинг: 0 / 0
14.12.2008, 18:41:30
    #35713386
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить условия пересчета при загрузке
Vadim Romanenko,
Модератор:
Бывает, код ссылок я поправил.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как определить условия пересчета при загрузке / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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