saz Пользователь Сообщений: 12 |
Добрый день! |
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
Алгоритм такой: перебираем циклом пять нужных листов и на каждом вызываем макрос обновления. |
saz Пользователь Сообщений: 12 |
#3 15.03.2016 09:58:39
Так получается? Не очень помню написание на VBA |
||
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
#4 15.03.2016 10:03:10
Это Вы меня спрашиваете? ))
Что у Вас с памятью? )
|
||||||
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
|
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
#6 15.03.2016 10:16:06 Не видел Вашего сообщения, когда писал своё. Если у Вас обновление происходит именно так:
то попробуйте такой вариант:
|
||||
saz Пользователь Сообщений: 12 |
кнопка цитирования не для ответа [МОДЕРАТОР] Вы меня извините)) |
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
Цитировать меня, а тем более, полностью нет никакой необходимости. Если Ваша строка производит обновление на листе, то эта же строка в цикле будет делать те же самые действия с каждым листом в цикле. |
saz Пользователь Сообщений: 12 |
Юрий М, я вот и спрашиваю,как сделать эту строку, у меня обновление идёт через надстройки |
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
См. #4 и вызывайте процедуру, которая занимается обновлением — я же не вижу, какой там макрос… |
saz Пользователь Сообщений: 12 |
Чтобы вызвать макрос,нужно его создать, я вопрос не правильно сформулровал, «какой будет код у макроса, который делает обновление таблиц» |
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
Да откуда же мне знать, что там за таблицы у Вас и что понимать под обновлением? Вручную Вы как их обновляете? |
saz Пользователь Сообщений: 12 |
Юрий М,в экселе установлена надстройка программы из которой идет обновление |
saz
Скопируй и проверь макрос ! ____________________________________________ |
|
saz Пользователь Сообщений: 12 |
Zaur Gasymov,не работает, пишет ошибку «не поддерживает это свойство или метод» |
kuklp Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
#16 15.03.2016 17:14:21 Кросс: http://www.programmersforum.ru/showthread.php?t=290527 Я сам — дурнее всякого примера! … |
каролинка 0 / 0 / 0 Регистрация: 28.10.2012 Сообщений: 152 |
||||
1 |
||||
Как обновить листы автоматически при их модификации01.11.2012, 13:48. Показов 11055. Ответов 4 Метки нет (Все метки)
Всем привет!
но не уверена, что обновляется то, что нужно
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
01.11.2012, 15:21 |
2 |
|||
?
1 |
каролинка 0 / 0 / 0 Регистрация: 28.10.2012 Сообщений: 152 |
||||
01.11.2012, 17:02 [ТС] |
3 |
|||
Казанский, не пересчитывает(
0 |
SlavaRus 1121 / 229 / 36 Регистрация: 15.03.2010 Сообщений: 698 |
||||
01.11.2012, 17:20 |
4 |
|||
В листе случаем не автофильтр? Если да, то попробуй:
1 |
0 / 0 / 0 Регистрация: 28.10.2012 Сообщений: 152 |
|
01.11.2012, 17:27 [ТС] |
5 |
SlavaRus, оказалось что да) все работает, спасибо!) Добавлено через 41 секунду
0 |
|
Группа: Пользователи Ранг: Новичок Сообщений: 17
Замечаний: |
Добрый день, уважаемые знатоки
Есть рабочий макрос на обновление данных в книге каждую секунду,
много ячеек с показателями времени, которые нужно видеть и понимать,что процесс идет
[vba]
Код
Sub calctimer()
Calculate
Application.OnTime Now + TimeSerial(0, 0, 1), «calctimer»
End Sub
[/vba]
HUGO пишет:
Цитата
Когда у Вас появится personal.xls* — то это файл вообще не сможете закрыть (если нет запроса разрешить макросы). Этот макрос времени нужно дорабатывать.
По совету _Boroda_ заменил на
Цитата
ActiveSheet.Calculate
shurikus также обращал внимание на проблему файла с этим макросом
ВОПРОС: каким другим методом можно нормально пересчитать активный лист (обновить данные)
A simple DoEvents
should do the trick!
Try this :
Private Sub Workbook_Open()
ThisWorkbook.RefreshAll
DoEvents
Run "Macro1"
End Sub
And if it’s not, just add this line after the DoEvents
:
Application.Wait(Now + TimeValue("0:00:05"))
This will put on hold the execution of the code, here for 5 seconds!
If you want to launch the save parts once a specific range has been modified, place your that code into the sheet module :
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect(Target, Me.Range(Rg_To_Check)) Is Nothing Then
'Not in range
Else
'In range to check
Run "Macro1"
End If
End Sub
And get rid of the Run "Macro1"
in the Workbook_Open()
event.
Also, be careful, because your last line is Application.DisplayAlerts = False
you won’t have alerts afterwards, you should use it like this instead :
Sub Macro1()
Dim ws As Worksheet, newWb As Workbook
Dim SaveToDirectory As String
SaveToDirectory = "C:Macro"
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For Each ws In Sheets(Array("locationwise"))
ws.Copy
Set newWb = ActiveWorkbook
With newWb
.SaveAs SaveToDirectory & ws.Name, xlCSV
.Close (False)
End With
Next ws
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
I am using all the solutions that appear in:
How to refresh ALL cell through VBA
Getting Excel to refresh data on sheet from within VBA
ActiveSheet.EnableCalculation = False
ActiveSheet.EnableCalculation = True
or
Application.Calculate
or
Application.CalculateFull
None of them works in Excel 2010. When I go to the cell and right click refresh it works. How can I refresh within VBA?
Sheets("Name_of_sheet").Range("D424").Refresh
raises an
exception 438
Questions:
- How can I make the script support Excel 2003, 2007, 2010?
- How can I choose the source file to refresh from using VBA?
EDIT:
-
I want to simulate a right mouse click and choose refresh in the menu in
worksheet 3
. That is the entire story. -
I work on an Excel file created 10 years ago. When opening in Excel 2010, I can go to a cell and right click on it and choose refresh and then choose the .txt file to refresh from. I am trying to do it automatically within VBA.
asked Nov 22, 2012 at 13:39
6
You could try using Application.Calculation
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic
answered Nov 22, 2012 at 13:42
4
For an individual cell you can use:
Range("D13").Calculate
OR
Cells(13, "D").Calculate
0x90
38.9k36 gold badges163 silver badges244 bronze badges
answered Nov 22, 2012 at 13:46
InContextInContext
2,46112 silver badges24 bronze badges
1
I finally used mouse events and keystrokes to do it:
Sheets("worksheet34").Select
Range("D15").Select
Application.WindowState = xlMaximized
SetCursorPos 200, 600 'set mouse position at 200, 600
Call mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0) 'click left mouse
Application.SendKeys ("R")
answered Nov 29, 2012 at 5:52
0x900x90
38.9k36 gold badges163 silver badges244 bronze badges
2
just a reminder;
be careful when using
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic
this sets the entire excel application to calculate formula’s either automatically or manually. If you use
Application.Calculation = xlCalculationManual
you’ll notice your automatic formulas no longer work.
cheers
answered Feb 16, 2016 at 17:53
You can force excel to recalculate a cell or range of cells by marking the cell/range as dirty.
Example :
' Recalculate Column D4 to D24
Sheets("Name_of_sheet").Range("D4:D24").Dirty
or
' Recalculate Cell D4<br>
Sheets("Name_of_sheet").Range("D4").Dirty<br>
Ike
7,8904 gold badges11 silver badges29 bronze badges
answered Sep 5, 2021 at 11:16
Application.Calculate
didn’t work for my function. Not even when followed by DoEvents
.
What I found that works is to re-enter the formula in the cell.
A simple way to get the formula is to start recording a macro
, use F2
to edit the cell, then press enter
. The macro will make a great copy of the function text with all needed quotes.
Below is an example.
Sheets("Name_of_sheet").Range("D424").FormulaR1C1 = "=now()"
svyat1s
8689 gold badges12 silver badges21 bronze badges
answered Mar 5, 2021 at 19:36
Cells(x, y).Select
ActiveCell.FormulaR1C1 = Selection.Value
works perfectly for me
answered Aug 2, 2022 at 20:21
I have a long «macro» in a workbook > 20 MB, tens of thousands of lines, that calls a dll written in Fortran. None of these methods worked:
Call Application.Calculate
Call Application.CalculateFull
Call Application.CalculateFullRebuild
Re-entering the formula
Range.Dirty
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomatic
ThisWorkbook.ActiveSheet.EnableCalculation = False
ThisWorkbook.ActiveSheet.EnableCalculation = True
This worked:
On Error Resume Next
Application.SendKeys "{F2}{Enter}{NumLock}" 'SendKeys turns off NumLock for some reason
On Error GoTo 0
This even worked when a chart was selected.
answered Feb 9 at 14:47
Rocky ScottRocky Scott
4364 silver badges13 bronze badges
«Обновить все» с помощью макроса.Как это сделать,если воможно такое.
Краткость, конечно, сестра таланта, но не в Вашем случае.
«Обновить все» — что все? К какой команде или объекту это относится? _сводные_, диаграммы или еще что?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453
«Обновить все» Ctrl+Alt+F5 Обновление в книге всех сведений из источников данных.Excel 2007 во вклатке «Данные»
Я так полагаю, у Вас сломался макрорекордер? Почему все так брезгуют им пользоваться?
ActiveWorkbook.RefreshAll
Да, вдруг Вы не знаете, что такое макрорекордер — почитайте здесь
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453