Время прочтения: 4 мин.
- в
каких случаях важно запускать макрос в «фоновом» режиме и почему необходимо
реагировать на действия пользователя; - пример
реализации работы «фонового» приложения (проверено на версиях c 2007); - актуализация
программного кода в приведенном примере к версиям 2013-2016.
Зачем скрывать приложение с экрана?
Приложение с
выполняющимся макросом имеет смысл переводить в «фоновый» режим, если
предполагается, что пользователь продолжит работать за компьютером, при этом
без необходимости контролировать работу макроса: скрытое с экрана приложение не
вызовет раздражение пользователя «непрорисованной» экранной областью, не
потребует ресурсов для такой прорисовки, не будет подвержено воздействию
пользователя на формирующуюся книгу (например, активацией объектов книги, использованием
буфера памяти приложения).
Как
реализовать?
Объектная модель Excel позволяет работать с несколькими книгами
(объектами Workbook)
в одном приложении (в объекте Application).
А значит, приложение, скрытое с экрана для выполнения макроса, может быть
вызвано операционной системой для попытки открыть в нем указанный пользователем
файл. В результате, попытка открытия файла либо будет безрезультатной, либо
пользователю придется ожидать окончания выполнения скрытого макроса для
возможности приступить к работе с файлом.
- Чтобы скрытое приложение могло реагировать должным образом на загрузку пользовательского файла, необходимо указать порядок действий в событиях приложения (события объекта Application) – реализую их в отдельном классе.
ExAppClass (class module)
'Переменная уровня приложения
Private WithEvents ExApp As Excel.Application
'Указывает объект для управления
Public Function SetExApp(ByVal NewExApp As Excel.Application) As Excel.Application
Set SetExApp = Nothing
If (NewExApp Is Nothing) Then
Exit Function
End If
If (Not ExApp Is Nothing) Then
Call ToNothingApp
End If
Set ExApp = NewExApp
Set SetExApp = ExApp
End Function
'Возвращает ссылку на управляемый объект
Public Function GetExApp() As Excel.Application
Set GetExApp = ExApp
End Function
'Заново открывает пользовательскую книгу в новом приложении
Private Sub ExApp_WorkbookOpen(ByVal Wb As Workbook)
Dim TransApp As Excel.Application
Dim TransWbName As String
'Запоминаю
TransWbName = Wb.FullName
Wb.Close False
Set Wb = Nothing
'Открываю заново
Set TransApp = New Excel.Application
TransApp.Visible = True
TransApp.Workbooks.Open TransWbName
Set TransApp = Nothing
End Sub
'Заново создает пустую книгу в отдельном приложении
Private Sub ExApp_NewWorkbook(ByVal Wb As Workbook)
'Реализация аналогична процедуре ExApp_WorkbookOpen()
End Sub
'Заново открывает пользовательскую книгу в новом приложении с режимом просмотра
'(реализация процедуры требуется при наличие данного события в версии Excel)
Private Sub ExApp_ProtectedViewWindowOpen(ByVal Pvw As ProtectedViewWindow)
Dim TransApp As Excel.Application
Dim TransWbName As String
'Запоминаю
TransWbName = Pvw.Workbook.FullName
Pvw.Workbook.Close False
Pvw.Close
Set Pvw = Nothing
'Открываю заново
Set TransApp = New Excel.Application
TransApp.Visible = True
TransApp.ProtectedViewWindows.Open TransWbName
Set TransApp = Nothing
End Sub
'Уничтожает ссылку на приложение
Public Sub ToNothingApp()
If (Not ExApp Is Nothing) Then
ExApp.Visible = True
Set ExApp = Nothing
End If
End Sub
'Уничтожает объект, управляющий приложением
Private Sub Class_Terminate()
Call ToNothingApp
End Sub
Стоит отметить, что в
подобных задачах часто реализуются возможности для управления «своим» или
«чужим» запущенным приложением Excel,
определяется количество допустимых для обработки книг, список допустимых к
открытию книг.
- Для
скрытия приложения с экрана и запуска в нем требуемого функционала, добавляю
программный модуль.
ExecModule (module)
'"Захватывает" приложение и запускает искомый макрос
Public Sub Exec()
Dim clsProgApp As New ExAppClass
With clsProgApp
'Начинаю управлять «своим» приложением
Call .SetExApp(NewExApp:=ThisWorkbook.Application)
'Скрываю приложение
.GetExApp.WindowState = xlMinimized
.GetExApp.Visible = False
'Запускаю макрос с искомым функционалом
Call ResultRun(.GetExApp)
'Отображаю приложение с искомым результатом
.GetExApp.Visible = True
.GetExApp.WindowState = xlNormal
'Перестаю управлять объектом Application
Call .ToNothingApp
End With
Set clsProgApp = Nothing
End Sub
Private Function ResultRun(ByVal ManagerExApp As Excel.Application) As Boolean
'Здесь реализуется какой-либо искомый функционал...
'Продолжительный по времени функционал
'должен периодически вызывать функцию DoEvents
'для реагирования процесса на действия пользователя
End Function
Что
актуализировать?
Приложение Excel, начиная с версии 2013, позволяет
пользователю работать с книгами в отдельных окнах (реализуя Single Document Interface). При этом, книги
фактически, как и в прежних версиях, могут быть загружены в коллекцию одного
приложения. Потому приведенный пример программного кода в целом остается
работоспособным за исключением обнаруженных на практике «специфического поведения»
приложения.
При попытке закрыть вызванный пользователем файл, происходит обращение к скрытому приложению, в котором он в данный момент загружен. Важно временно отобразить скрытое приложение, перед закрытием файла. Иначе в памяти остаются «висеть» ссылки на объекты закрываемого файла. Приведу пример исправления события.
ExAppClass (class module)
'(Для интерфейса SDI) заново открывает пользовательскую книгу в новом приложении
Private Sub ExApp_WorkbookOpen(ByVal Wb As Workbook)
Dim TransApp As Excel.Application
Dim TransWbName As String
Dim AppVersion As Integer
Dim SDIversion As Integer: SDIversion = 15
With ExApp
AppVersion = Fix(Replace(.Version, ".", ","))
If (AppVersion >= SDIversion) Then
'Временно отображаю скрытое приложение
.Visible = True
End If
'Запоминаю
TransWbName = Wb.FullName
Wb.Close False
Set Wb = Nothing
If (AppVersion >= SDIversion) Then
'Скрываю приложение
.Visible = False
End If
End With
'Открываю заново
Set TransApp = New Excel.Application
TransApp.Visible = True
TransApp.Workbooks.Open TransWbName
Set TransApp = Nothing
End Sub
Use the Application.OnTime
method to schedule code that will run in one minute.
Your code will look something like this (Untested):
Sub CreateNewSchedule()
Application.OnTime EarliestTime:=DateAdd("n", 1, Now), Procedure:="macro_name", Schedule:=True
End Sub
Sub macro_name()
If Value > 10 Then
SendEmail
Else
CreateNewSchedule
End If
End Sub
You might want to store the time of the next schedule in a global variable so that the Workbook_BeforeClose
event can cancel the next schedule. Otherwise Excel will re-open the workbook.
Public nextScheduledTime As Date
Sub CreateNewSchedule()
nextScheduledTime = DateAdd("n", 1, Now)
Application.OnTime EarliestTime:=nextScheduledTime , Procedure:="macro_name", Schedule:=True
End Sub
Sub macro_name()
If Value > 10 Then
SendEmail
Else
CreateNewSchedule
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime EarliestTime:=nextScheduledTime, Procedure:="macro_name", Schedule:=False
End Sub
You can then continue to use Excel between the scheduled times.
Оптимизировал как мог.
Вот он макрос:
Sub Calculating()
‘
‘ Calculating Макрос
‘
‘
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, counter, i As Integer
counter = 0
For var1 = 2 To 6 Step 1
For var2 = 2 To 6 Step 1
For var3 = 2 To 6 Step 1
For var4 = 2 To 6 Step 1
For var5 = 2 To 6 Step 1
For var6 = 2 To 6 Step 1
For var7 = 2 To 6 Step 1
For var8 = 2 To 6 Step 1
For var9 = 2 To 6 Step 1
For var10 = 2 To 6 Step 1
Windows(«VALUES»).Activate
Worksheets(«Лист1»).Activate
Range(«DS2»).Select
Selection.FormulaR1C1 = var1
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var2
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var3
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var4
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var5
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var6
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var7
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var8
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var9
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var10
‘ и вот тут уходит наверное полсекунды-секунда (большой объем пересчитывает каждый круг):
Application.Calculate
Windows(«_1001_»).Activate
Worksheets(«Лист1»).Activate
‘ и на этом цикле уходит время около секунды, вот и получается две секунды:
For i = -20 To 20 Step 1
Range(«P17»).Select
ActiveCell.FormulaR1C1 = i
Worksheets(«Лист1»).UsedRange.Columns(«N:X»).Calculate
Range(«U261»).Select
Selection.Copy
Range(«X23»).Select
ActiveCell.Offset(rowoffset:=i + 20, columnoffset:=0).Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Next i
Worksheets(«Лист1»).Calculate
Range(«X21:X22»).Select
Selection.Copy
Worksheets(«Sorted»).Activate
Range(«L1»).Select
ActiveCell.Offset(rowoffset:=counter, columnoffset:=0).Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Application.CutCopyMode = False
Range(«A1»).Select
ActiveCell.Offset(rowoffset:=counter, columnoffset:=0).Activate
Selection.FormulaR1C1 = var1
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var2
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var3
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var4
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var5
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var6
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var7
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var8
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var9
ActiveCell.Offset(rowoffset:=0, columnoffset:=1).Activate
Selection.FormulaR1C1 = var10
Range(«O1»).Select
ActiveCell.Offset(rowoffset:=counter, columnoffset:=0).Activate
Selection.FormulaR1C1 = MyTime
counter = counter + 1
Next var10
Next var9
Next var8
Next var7
Next var6
Next var5
Next var4
Next var3
Next var2
Next var1
Application.Calculate
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Фоновый режим при выполнении макроса |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Запуск макросов в фоновом режиме
На чтение 2 мин. Просмотров 61 Опубликовано 14.05.2021
Когда вы запускаете макрос в Excel, программа уделяет все свое внимание завершению макроса. (Звучит почти антропоморфно, не так ли?) Это означает, что, если макрос выполняет достаточно тяжелую обработку ваших данных, может показаться, что ваша система “зависла” во время обработки макроса.
Однако будьте уверены, что обработка макросов влияет только на Excel. Вы можете открыть другое приложение и работать в нем, пока фрагменты макроса будут работать в Excel в фоновом режиме. Конечно, внимание, уделяемое макросу вашей системой, вероятно, замедлит реакцию другой программы, но это зависит от версии Windows, которую вы используете в своей системе. Причина? Совместное использование ресурсов требует процесса, известного как многозадачности. Различные версии Windows по-разному обрабатывают многозадачность.
Вы можете задаться вопросом, как вы можете выполнять другую работу в Excel, когда программа занята выполнением макроса. Легко – просто откройте еще один экземпляр Excel (снова запустите его из меню «Пуск») и выполните другую работу. Все, что вам нужно сделать, это убедиться, что вы не пытаетесь работать с той же книгой (или книгами), которая используется макросами в вашем первом экземпляре Excel.
Другой способ сделать немного работы – это немного изменить ваш макрос. Скорее всего, если ваш макрос выполняется в течение длительного периода, это связано с тем, что он выполняет цикл определенного типа. Добавив в цикл команду DoEvents, макрос временно приостановит выполнение и вернет управление процессам пользователя. Итак, если вы нажали клавишу, щелкнули мышью или начали что-то печатать, DoEvents заметит это и выполнит все задачи, необходимые для выполнения того, что вы хотите. Когда весь пользовательский ввод обработан, макрос благополучно продолжает свой путь.
Добавление DoEvents несколько замедляет ваш макрос, но позволяет вам немного продолжить работу. (Поймите, что Excel по-прежнему будет работать медленно; ваш макрос требует ресурсов для запуска.) Добавление DoEvents также может предоставить возможность выйти из макроса (используя Ctrl + Break ) контролируемым образом. .
Однако помните, что вы можете выяснить, что лучше всего работает в вашей ситуации, только путем тестирования (и дополнительного тестирования).
Andy Mist |
|
1 |
|
Выполнение макроса в «фоновом» режиме11.08.2010, 09:52. Показов 10112. Ответов 2
Подскажите как заставить макрос выполняться в так сказать фоновом режиме, т.е. без этого безумного мелькания строк и рабочих листов? |
14 / 14 / 2 Регистрация: 23.03.2010 Сообщений: 635 |
|
11.08.2010, 13:18 |
2 |
application.screenupdating = false …
0 |
0 / 0 / 0 Регистрация: 19.04.2010 Сообщений: 8 |
|
07.09.2010, 14:03 |
3 |
Что-то не очень то работают эти команды
0 |
А Вы и запускайте и прирывайте макрос из одно й и той же формы.
Более того, можно это сделать одной и той же кнопкой.
Многопоточность в VBA возможна, но только средствами WinAPI.
Т.е. CreateTread и прочие функции этой группы. Все они находятся в kernel32.dll.
Если с WinAPI и многопоточностью не знакомы, то проще сделать как я советовал в начале.
Вот пример:
Добавьте форму, на нее кнопку с надписью «Start».
Вот обработчик нажатия кнопки.
Код: Выделить всё
Private Sub CommandButton1_Click()
If CommandButton1.Caption = "Start" Then
CommandButton1.Caption = "Stop"
While CommandButton1.Caption = "Stop"
[a1] = Rnd
DoEvents
Wend
Else
CommandButton1.Caption = "Start"
End If
End Sub
Пока повторно не нажмут кнопку в ячейку А1 постоянно пишется случайное число.
Только тут еще надо обработать событие QueryClose у формы. Тут как хотите, либо
(тогда все будет останавливаться при закрытии формы)
либо
(тогда форму нельзя будетт закрыть пока явно не нажмут Stop)
Как открыть файл в скрытом режиме для пользователя?
Смотрите также начинаю (пусть она
сохраняет в туже ComboBox3.ListIndex = 0 держать открытым client.xlsm), Нужно чтобы рабочая тоже производиться в у вас книга Filename» подчеркнута: файл)Margot
дело — обязательно objXL.Quit заработало. Нужен только Len(ActiveWorkbook.name) — 5) «75» ‘ширина столбцовUchimata называется Книга1.xlsm). папку) книгу с Private Sub CommandButton72_Click() то все связи постоянно была активна фоновом режиме в
закрывается без сохранения,Sub update()Ну и ответыИ что значит: Здравствуйте,ActiveWorkbook.Close SaveChanges:=True ‘убираем указатель наSet objXL = Nothing
‘имя минус .XLS .ListRows = 10
CyberForum.ru
Как активировать файл excel из фонового режима | MS Word
: Доброе утро!Я работаю с названием Dim fName As обновляются.
webley этой книге. Но это правильно?With Application на Ваши вопросы ? -Можете ли вы
Имя = Dir excel Set objXLPrivate Sub CommandButton2_Click() — 4 символа ‘значений в раскрытом
Хотел бы узнать новой книгой, ноDate & «.xlsx»,
Variant fName =ПРОБЛЕМА:: а расчеты в в этом случае
@Nik.ScreenUpdating = False
-Margot пояснить поподробнее кодLoop = Nothing ‘убираем Dim sFilePath, objXL,этот вариант я списке End With как открыть файл в ней нет. Потом в «C:ПечатьДокументаxlsmDBoss.xlsm» Set fNameНо, если нет макрос перенести не расчет не происходит.: Ну не знаю….DisplayAlerts = False1. нужно присвоить: Имеется ввиду что данный выше?============================================================== файл из фонового Secur sFilePath = пробовал, выводит сообщение
Me.ComboBox3.List = wс.Worksheets(«Руководство»).Range(«СписокФИОВсе»).Value в скрытом режиме макросов, и потому этой книге макросы = CreateObject(«excel.application») ‘Application.GetOpenFilename
открытого приложения Excel, вариант?Валерий
Если автоматическое обновлениеmacrosMAJ = «C:UsersE500892DesktopFichier переменной «папка» значение нужно писать на
Sub update()С доработкой вероятно режима End Sub «C:ПечатьДокументаxlsmРедактированиеДанных.xlsm» ‘ActiveDocument.Path & на сохранить или
ComboBox3.ListIndex = 0 от пользователя,необходимо открыть мне нужна первая
выполняют некоторые действия fName = Left(ActiveWorkbook.name,
то при попыткеВалерий: Так как имена включено, то попробуйте de SUIVIMBAV BarèmesmacrosMAJ» полного пути к месте слов «Папка»
With Application ‘операции так:
Private Sub CommandButton31_Click() ‘objXL.WorkBooks.Close ‘objXL.Quit Set нет и все Private Sub CommandButton72_Click() и закрыть несколько книга. — какие, не
Len(ActiveWorkbook.name) — 5) обновления связей PowerPoint
: Не работает
файлов кодируются, надо ещё так:origine = Dir(macrosMAJ той папке, где и «Имя»: с приложением/отключаем дляCode200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub update() CreateObject(«wscript.shell»).Run «C:ПечатьДокументаxlsmDBoss.xlsm» Unload
objXL = Nothing равно открывается в Dim fName As файлов,но очень неRAN суть важно.
‘имя минус .XLS пытается открыть «фоново»Валерий пояснить:Sub new_calculation() & «*.xls*»)
лежит файл. ПримерноЯ написала этот
повышения скорости работыWith Application’операции с
Me End SubВсе, Set objXL = режиме чтения. Variant fName =
нравится что они: В таком разеВопрос, как мою — 4 символа
client.xlsm (с поддержкой: Не вариант -post_179806.xls — этоSet objExcel =
Do While origine вот так код таким образом,что макроса приложением/отключаем для повышения Всем УДАЧИ! CreateObject(«Excel.Application») ‘ получаемАватар-С «C:ПечатьДокументаxlsmDBoss.xlsm» Set fName появляются на панели тебе нужна надстройка. книгу открыть в Workbooks(fName).Activate End Sub макроса) и валится очень много обрабатываемых main.xls New Excel.Application
<> «»КодПапка = «c:UsersМояПрочееДля_Excel» подставила вместо слова.ScreenUpdating = False скорости работы макросаELLE указатель на Application
: Писал же! = CreateObject(«excel.application») ‘Application.GetOpenFilename и исчезают.Можно ли Она при запуске фоновом режиме, иВернуться к обсуждению: в ошибку: даных а экселевскийpost_179808.xls — этоSet wbhidden =With Workbooks.Open Filename:=macrosMAJ2. КодИмя = «папка» имя папки,где ‘обновление экрана.ScreenUpdating = False’обновление: Доброго времени суток!
objXL.Visible = True
_shark
fName = Left(ActiveWorkbook.name, это избежать?? невидима, но макросы
по закрытии книги,Как активировать файл»Во время последнего движок существенно быстрее calculate.xls objExcel.Workbooks.Open(«D:calculate.xlsb») & origine, UpdateLinks:=True Dir(Папка & «*.xls*») находятся файлы, которые.DisplayAlerts = False экранаПомогите пожалуйста!!!! ‘ делаем окно: Уже убрал. Len(ActiveWorkbook.name) — 5)Sub Обновление() Application.AskToUpdateLinks в ней работают. с которой она
excel из фонового
открытия документа «Client.xlsm» чем рукописный макрос.
webleywbhidden.Sheets(«RES_1»).Cells.Dirty.Close SaveChanges:=True «Имя» — это нужно обновить (macrosMAJ)
‘вывод системных сообщений.DisplayAlerts = False’выводИмеется группа экселевских Excel видимым SetТеперь вообще не
‘имя минус .XLS = False Application.DisplayAlerts
Создается либо сохранением работает (и только режима | MS Произошла серьезная ошибка.
@Nik
: Я думаю, делоwbhidden.Close FalseEnd With переменная. С тем и вместо «Имя»Папка (имеется ввиду системных сообщений файлов (около 400),
wс = objXL.WorkBooks.Open(sFilePath) чего не происходит,
— 4 символа = False Workbooks.Open как надстройка (Книга1.xlam), этой книги) сохранить Word Продолжить его открытие?»: А если сделать в том, чтоSet objExcel =origine = Dir же успехом можно — имя файла что надо прописатьПапка = «полный данные из которых End SubЯ ведь не ругается не Workbooks(fName).Activate End Sub «…Файл.xls» ActiveWorkbook.RunAutoMacros xlAutoOpen либо поставить свойство и закрыть обе?Следующий ответПроблемы нет в так: в когда открывается NothingLoop было назвать «Imya». в котором изменяются
CyberForum.ru
!!!!! ОБНОВЛЕНИЕ ФАЙЛОВ БЕЗ ОТКРЫТИЯ!!!!!
имя папки ?)= путь папки»
сводятся в отдельном
это и прислал открывает.Аватар-С ActiveWorkbook.Save ActiveWorkbook.Close Workbooks.Open IsAddin (в модуле
зы. Только мнеdimanoid случае фонового открытияSub new_calculation() книга в другомEnd Sub.ScreenUpdating = True
Кстати, как и данные (origine): «полный путь папки»’———— Excel-файлы в файле.
в архиве СмАватар-С: Вот смотри верхняя «…Файл2.xlsx» ActiveWorkbook.RunAutoMacros xlAutoOpen книги) True (Книга1.xlsm)
не надо направление,: ДАНО: обычного xlsx-файла (БЕЗWorkbooks.Open («D:calculate.xls») экземпляре Excel, тоИли попробуйте вставить.DisplayAlerts = True
«папка». Просто авторSub update()’———— Excel-файлы в этой папке ——————
Данные в каждом #14: Приложил бы файл
строка fName - ActiveWorkbook.Save ActiveWorkbook.Close Application.AskToUpdateLinksНо если просто пальцем укажите, если
MS Office 2010
макросов) Предполагаю, чтоWindows("calculate.xls").Visible = False связи между ячейками
Application.Calculation = xlCalculationManualEnd With
макроса посчитал, чтоWith Application
этой папке ------------------Имя = Dir(Папка
файле зависят от_shark и toiai
пример, легче было объект, нижняя -
= False Application.DisplayAlerts убрать с глаз это действие возможно
client.xlsm (с поддержкой
проблема с фоновым
Workbooks("calculate.xls").Close False
просто нет. А
Application.Calculation = xlCalculationAutomaticEnd Sub
так будет понятнее
.ScreenUpdating = FalseИмя (о каком & «*.xls*»)
даты, которая забиваетсяСпасибо за участие!
осознать проблему. строка определись?
= False Workbooks.Open долой — тогда
Гость макроса)
открытием именно xlsm-файлаApplication.Visible = True
почему не сделатьHugo
Валерий
Margot.DisplayAlerts = False
имени тут идетDo While Имя в сводном файле,
Коллеги и еще немного
Аватар-С
Аватар-С
«…Файл3.xlsx» ActiveWorkbook.RunAutoMacros xlAutoOpen
Visible.: visible=false
top.pptx — презентация (безопасность?)
End Sub
просто вот так?
: А как Вы: Добрый день. Столкнулся: Спасибо за ответ!ТеперьmacrosMAJ = «C:Users…macrosMAJ» речь?)= Dir(Папка & <> «» и на которую
о наболевшем.: Да, Коллеги прошу
: ActiveWorkbook.Save ActiveWorkbook.Close End
Michael_S
Michael_S со внедренными (связанными)
Что можно сделать/попробовать?
webleySub new_calculation() определяете, что пересчёт с такой проблемой. это понятно.origine = Dir(macrosMAJ
«*.xls*») (имя папкиWith .Workbooks.Open _
ссылаются эти отдельныеtoiai
прощенья с этого
toiai
Sub: Спасибо, с вопросом
: Пробую для проверки
диапазонами и диаграммами (С галками в
: ЗдОрово! Надо наWorkbooks.Open («D:calculate.xls») не происходит?
Пытаюсь запустить из
Переделала, но все & "*.xls*") & "*.xls*"?)(Filename:=Папка & Имя,
файлы.прошу прощенья не
следовало начать.Материться желтым цветом
Vlad999 Visible разобрался..200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub ttt1() из client.xlsm
Центре безопасности Excel будущее запомнить…
Application.Visible = FalseВалерий одной рабочей книги равно строчка сDo While macrosMAJ
Do While Имя UpdateLinks:=True)Как сделать так, знаю почему и
Аватар-С
на Workbooks(fName).Activate (Sub: Sub Макрос1() Application.ScreenUpdating
200?’200px’:»+(this.scrollHeight+5)+’px’);»>Windows(«книга1.xlsx»).Visible=falseWorkbooks(3).Visible = FalseПри открытии top.pptx
и PowerPoint уже
Валерий
Workbooks(«calculate.xls»).Close False
: Да, правильно. Она
вторую (вспомогательную, в «With Workbooks.Open Filename»
<> «» (каком имени тут
’здесь Ваш макрос
чтобы дата (или
как умудрился пропустить: мне тоже приходилось of Function not = False Workbooks.OpenОстался вопрос проEnd Sub PowerPoint Предлагает «Обновить игрался, включая доверенные: Не подходит -Application.Visible = True только считает и
которой будет осуществляться
подчеркивается :With .Workbooks.Open _ идет речь?) <>
делает свое грязное ссылка) в тих Ваш вложенный файл.
в одном из defined) «D:таблица для заказа закрытие и сохранение.-ошибка связи». Если к файлы и места
книга-то все равноEnd Sub
возвращает данные в расчет, исходя изSub update()(Filename:=macrosMAJ & origine, «»
дело файлах обновлялась автоматическиСтал имплантировать код своих макросов открывать_shark панелей..xls», UpdateLinks:=True ‘вашаRANWorkbooks(3).Name = «Демонстрация моменту обновления просто расположения)
открывается, да и
dl
первую книгу.
параметров первой книги)
With Application
UpdateLinks:=True)КодWith .Workbooks.Open _
.Close SaveChanges:=True без открытия файла???
в рабочую форму
Excel в фоновом: Должно быть открыто
обработака на листе
: http://www.excelworld.ru/forum/2-2140-1
(001_1).xlsm", открыта.
открыт даже "пустой"
Аватар-С
Visible отключать смысла
: задача
Валерий
в фоновом режиме.ScreenUpdating = False.Close SaveChanges:=True(Filename:=Папка & Имя,
End With
Или, может, есть и опять файл
(невидимом) режиме и в одном окне,
ActiveWorkbook.Close Application.ScreenUpdating =Michael_SRAN Excel (не обязательно:
нет, т.е.книга потоместь расчётная книга: Данные не возвращаются. и выполнить расчет.
.DisplayAlerts = FalseEnd With
UpdateLinks:=True)Имя = Dir какая-то программка, которая
открывается в режиме получать/сохранять оттуда данные. а у тебя True End Sub: Спасибо, но не
: Погляди в сторону
держать открытым client.xlsm),Здравствуйте Коллеги! все-равно закрывается.
которая содержит ссылки Причем пересчет в Код такой:
macrosMAJ = «C:UsersE500892…macrosMAJ»origine = Dir’здесь Ваш макросLoop бы запускала обновление только чтение.
Такая ситуация с
в разных.Uchimata совсем то, что GetObject то все связиПрошу помощи вwebley на данные рабочей обычном режиме занимаетSub new_calculation()
origine = Dir(macrosMAJLoop делает свое грязное
.ScreenUpdating = True’обновление этих файлов вВ общем проблему режимом «только для
Попробуй использовать GetObject,
: Спасибо большое!!Очень помогли!
мне надо. второй
Set CADObject =
обновляются.
решении следующей ситуации.: А в чем
книги довольно длительное время,
Set objExcel = & "*.xls*")
.ScreenUpdating = True
дело
экрана
определенное время?
решил следующим кодом:
чтения" была тогда,
у меня проверить
Аватар-С
вопрос — создам GetObject(«C:CADDate & «.xlsx»»)ПРОБЛЕМА:Есть форма в проблема тогда? Можнов ней есть а в фоновом New Excel.ApplicationDo While origine
.DisplayAlerts = True.Close SaveChanges:=True
.DisplayAlerts = True’выводSerge_007CreateObject(«wscript.shell»).Run «C:ПечатьДокументаxlsmDBoss.xlsm» когда в памяти нет возможности.
: другую тему.После такого открытияНо, если нет документе word она подумать, что в ячейки «итого» содержащие
книга только открывается
Set wbhidden =
<> ""
End With
End With системных сообщений
: Без открытия боюсьЗдравствуйте Коллеги!
находилось два процессаАватар-С
Здравствуйте Коллеги!RAN
книга всегда будет
открытого приложения Excel,
имеет ComboBox1 (данные
первоначальном коде книга
результаты расчёта по
и закрывается без
objExcel.Workbooks.Open("D:calculate.xlsb")
With Workbooks.Open Filename:=macrosMAJ
excelworld.ru
Расчет книги в фоновом режиме
End SubИмя = DirEnd With не получится. НоДля очистки совести Excel. Через Диспетчер: все равно ругаетсяПрошу помощи в: Тогда поподробнее, можно открываться скрытой. Чтобы то при попытке приходят из таблицы
не открывалась… Пользователь
ссылочным данным рабочей каких-либо действий и
objExcel.Workbooks(«calculate.xlsb»).Sheets(«RES_1»).Calculate & origine, UpdateLinks:=True
Но код не
Loop
End Sub можно открывать файлы
возвращаюсь к теме.
Задач закройте всеDim fName As решении следующей ситуации.
с примерчиком и при ручном открытии
обновления связей PowerPoint
excel «Книга1.xlsm» которая не видит -
книги быстро.
wbhidden.Close False
.Close SaveChanges:=True
работает и подчеркивает
.ScreenUpdating = TrueELLE
в фоновом режиме,
После вставки кода: Excel-евские процессы, а Object Set fNameЕсть форма в кодом.
она отображалась, ее пытается открыть «фоново» запущена в фоновом
цель достигнута. Илив рабочей книгеВалерийSet objExcel =End With
ошибку в строке ‘обновление экрана: Hugo, спасибо большое! так что пользовательCreateObject(«wscript.shell»).Run «C:ПечатьДокументаxlsmDBoss.xlsm»Все вроде
потом уже пробуйте
= GetObject(«C:ПечатьДокументаxlsmDBoss.xlsm») fName документе word она
А то я перед сохранением необходимо
client.xlsm (с поддержкой
режиме).
нет? введены ссылки на
: Не помогает. Может
Nothing
origine = Dir
:
.DisplayAlerts = True Только не могли этого не увидит бы заработало но,
дальше = Left(ActiveWorkbook.name, Len(ActiveWorkbook.name) имеет ComboBox1 (данные совсем не понял, отобразить. Можешь поставить
макроса) и валитсяФорма также имеетВалерий ячейки итого расчётной я что-то принципиальноEnd SubLoopКодWith .Workbooks.Open _ ‘вывод системных сообщений бы Вы еще
ELLE при открытии файлаВот вариант не — 5) ‘имя
приходят из таблицы что нать.
свойство IsAddin (в в ошибку: CommandButton1 который должен
: Всем, кто мне книги не так делаю.Почему-то расчет не.ScreenUpdating = True
(Filename:=macrosMAJ & origine,End With объяснить как создать: Serge_007, что значит в Excel выходило в режиме чтения, минус .XLS - excel «Книга1.xlsm» которая
Аватар-С модуле книги) True.Тогда»Во время последнего вызывать файл «Книга1.xlsm» помогал спасибо. РешилпроблемаПрикреплю файлы, пожалуй. выполняется. Подскажите в.DisplayAlerts = True UpdateLinks:=True)End Sub макрос более подробно.
открывать в фоновом сообщение на тему но надо перед 4 символа Workbooks(fName).Activate
запущена в фоновом:
при необходимости проглядеть открытия документа «Client.xlsm»
для редактирования данных проблему следующим образом:ссылки на данные Вот первый чем проблема, пожалуйста.End With_Boroda_Извините за такие что за чем. режиме?
— файл уже
запуском формы в
Аватар-С
режиме).
_shark и toiai
книгу, нужно будет
Произошла серьезная ошибка. ComboBox1.
Sub open_reserv() рабочей книги естественноВалерий@Nik
End Sub: вопросы, но этоищу в сети,Я в excel
открыть ну и диспетчере задач закрыть: Как-то не логично:Форма также имеет
Спасибо за участие!
в модуле книги Продолжить его открытие?»Просто открыть неSet book = не обновляются, решено: Вот второй, который: Попробуйте сделать так:
Фомулист
Margot
единственное место где
не могу найти. новичок, можно сказать!
соответственно параметры входа. все процессы EXCEL
fName = Left(ActiveWorkbook.name, CommandButton1 который долженКоллеги и еще немного вручную или макросом
Проблемы нет в получиться, создается файл GetObject(«D:primercalculate.xlsb», «Excel.Sheet»)
открыть расчётную книгу считаетSub new_calculation(): Потому, что это: я сделала как
я нашла кодне так много Только учусь!Решить удалось следующим
shark Len(ActiveWorkbook.name) — 5)
вызывать файл «Книга1.xlsm» о наболевшем. сменить свойство IsAddin случае фонового открытия для чтения.book.Close False
в фоновом режиме@NikSet objExcel =
не полный путь
вы просили, но
на обновление файлов
времени.
Hugo
образом:
Это я, пробовал ‘имя минус .XLS для редактирования данных
toiai на False. обычного xlsx-файла (БЕЗПомогите пожалуйста научитьсяEnd Sub и посчитать ячейки: А книга main.xls
New Excel.Application к файлу. «…» весь код заменяется без открытия изаранее спасибо!: Нашёл в закромахPrivate Sub UserForm_Initialize() не помогает. — 4 символа
ComboBox1.прошу прощенья неНу и visible=false макросов) Предполагаю, что
активировать файл «Книга1.xlsm»
Все считает. Так «итого»
тоже открыта ?
Set wbhidden =
в пути быть на знак # так как я
planetaexcel.ru
Открытие из PowerPoint в ФОНОВОМ режиме xlsm-файла с макро (Ошибка при открытии из PPoint xlsM-файла в фоновом режиме)
Hugo — откуда взял,
Dim sFilePath, objXL
Аватар-С Workbooks(fName).ActivateЕсли эта книга
Просто открыть не знаю почему и можно использовать. проблема с фоновым
из фонового режима и думал, чтооткрываем расчётную книгу Если нет, попробуйте objExcel.Workbooks.Open(«D:calculate.xlsb») не должно. Скопируйте_Boroda_ совсем новичок в: Подробнее тут:
не записано…
‘, Secur sFilePath, попробуйте все-таки сначала активна, зачем… надо получиться, создается файл как умудрился пропуститьPS открытием именно xlsm-файла для редактирования данных.
какая-то принципиальная ошибка.обновляем связи открыть и её.wbhidden.Sheets(«RES_1»).Activate
и вставьте именно: А Вы где работе с макросамиhttp://www.excelworld.ru/publ/vba/first_step/excel_macro/39-1-0-114200?’200px’:»+(this.scrollHeight+5)+’px’);»>============================================================== = «C:ПечатьДокументаxlsmDBoss.xlsm» ‘ActiveDocument.Path закрыть объект
убрать для чтения. Ваш вложенный файл.200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub qq() (безопасность?)В ниже приведенномdimanoid
excelworld.ru
Как активировать файл excel из фонового режима | MS Word
пересчитываем расчётную книгуВалерийApplication.CalculateFull полный путь к кнопку нажимаете? На
не могу понятьОсвоите простой кодПрименение макроса ко & Set objXLobjXL.WorkBooks.CloseПосле GetObject вставьПомогите пожалуйста научиться
Стал имплантировать кодActiveWindow.Visible = FalseЧто можно сделать/попробовать? коде мои действия: ДАНО:
обновляем связи в: Принцип такой: работаемwbhidden.Close False
папке. клавиатуре? как его применить. — можете попробовать
всем файлам из = CreateObject(«Excel.Application») ‘получаем
, затем выйти строку активировать файл «Книга1.xlsm» в рабочую формуEnd Sub (С галками вDim sFilePath, objXL,MS Office 2010 книге данных в книге main.xls,Set objExcel =_Boroda_Нужно на панели.Спасибо за помощь! этот (но сперва папки указатель на ApplicationobjXL.QuitfName.Application.Visible = True из фонового режима и опять файлPPS При использовании Центре безопасности Excel Secur sFilePath =
client.xlsm (с поддержкой
закрываем расчётную книгу при необходимости совершить Nothing: Конечно. Слеш забыли Вот здесь
CyberForum.ru
Открытие из PowerPoint в ФОНОВОМ режиме xlsm-файла с макроcом
buchlotnik на тестовых файлах,
Папка = «полный
objXL.Visible = False, обнулить объект
Аватар-С для редактирования данных. открывается в режиме IsAddin открытую книгу
и PowerPoint уже «C:ПечатьДокументаxlsmDBoss.xlsm» Set objXL макроса) с сохранением! расчет открываем книгуEnd SubЦитатаMargot: Доступно только для
или на копии
путь папки» ‘делаем окно ExcelSet objXL = Nothing: можно попробовать закрытьВ ниже приведенном только чтение. не увидишь даже игрался, включая доверенные
= CreateObject(«Excel.Application») Settop.pptx — презентацияиначЕ при обновлении calculate.xls, происходит расчет,
Правда, будет выполнен_Boroda_, 10.10.2017 в: Спасибо за объяснение)) пользователей рабочих в спецпапке).’———— Excel-файлы в не видимым objXL.ScreenUpdating
, а затем уже открытую книгу, а коде мои действияВ общем проблему через меню Вид-Отобразить. файлы и места wс = objXL.Workbooks.Open(sFilePath)
planetaexcel.ru
Как при окрытии книги сделать ее «невидимой»?
со внедренными (связанными) связей в книге
результаты записываются в пересчёт всех открытых 10:20, в сообщении исправила_Boroda_Путь к папке этой папке —————— = False Set выполнять код по потом через ShellDim sFilePath, objXL, решил следующим кодом:Michael_S расположения)
With ComboBox3 .ColumnCount диапазонами и диаграммами данных получим старые main.xls книг, но зато № 16 ()_Boroda_: — Прочитайте Правила
пропишите вместоИмя = Dir(Папка wс = objXL.Workbooks.Open(sFilePath) повторному запуску Экселя
еще раз активировать Secur sFilePath =
CreateObject(«wscript.shell»).Run «C:ПечатьДокументаxlsmDBoss.xlsm»: RAN, мне нужно
Michael_S
= 2 'колличество
из client.xlsm
данные.
Загвоздка в том, и требуемая в
Папка = «c:UsersМояПрочееДля_Excel»: А теперь я форума
Папка = «полный & «*.xls*»)
‘ШТАМ Me.ComboBox24.List = для редактирования данных. Excel с параметром «C:ПечатьДокументаxlsmDBoss.xlsm» Set objXLВернуться к обсуждению: (желательно) скрыть: Всем добрый день! столбцов .ColumnWidths =При открытии top.pptxGuest что книга calculate.xls том числе.Margot Вас огорчу -- Оформите код
путь папки»Do While Имя
wс.Worksheets(«Штампы»).Range(«СписокШтампы»).Value ComboBox24.ListIndex =
_shark
fName, содержащим путь
= CreateObject("Excel.Application") Set
Как активировать файлне новуюСуть вопроса: у «75» ‘ширина столбцов
PowerPoint Предлагает «Обновить: Да, кстати, а должна открываться вВалерий: Исправила как вы видите в макросе тегами (в режименапример <> «» 0 ‘в принципе
, до нужной книги. wс = objXL.Workbooks.Open(sFilePath) excel из фоновогокнигу, а мою меня есть книга,
.ListRows = 10 связи». Если к метод Application.CalculateFullRebuild пробовали? фоновом режиме (т.е.: Пробовал, не помогает. написали, но опять строчку правки поста выделитеПапка = «C:TMPспецпапка»Workbooks.Open FileName:=Папка & нужно было разобраться
Хорошо пробую._shark With ComboBox3 .ColumnCount режима | MS
« при своем открытии ‘значений в раскрытом моменту обновления просто
Валерий чтобы пользователь ничего
Сижу, медитирую. не работает и
.Workbooks.Open код и нажмитеELLE Имя , UpdateLinks:=True с этими тремя_shark
: начинает ругаться на = 2 ‘колличество Wordосновную»
она также открывает списке End With открыт даже «пустой»
excelworld.ru
Как активировать файл excel из фонового режима | MS Word
: Тогда скроются все не заметил), иwebley
та же строчка
? Так вот, кнопку
: Hugo, спасибо!’здесь Ваш макрос строками wс.Close FalseО! Япона мама fName = Left(ActiveWorkbook.name,
столбцов .ColumnWidths =Следующий ответ, с которой я (или создает и Me.ComboBox3.List = wс.Worksheets(«Руководство»).Range(«СписокФИОВсе»).Value
Excel (не обязательно книги в приложении.
расчет, соответственно, должен
: А то что
с «With Workbooks.Open эта строка ОТКРЫВАЕТ#попробую! делает свое грязное
CyberForum.ru
‘закрываем файл False