Функции приложения не работают, когда вы открываете другой файл в «безопасном режиме» - PullRequest
4 голосов
/ 23 сентября 2019

У меня есть книга, которая запускается каждые x минут с Application.OnTime.
Проблема в том, что если я открою другую книгу и получу желтую ленту с вопросом, хочу ли я отредактировать файл (или предупреждение о безопасности макросов)Application.OnTime перестает работать.

Здесь есть еще один вопрос, очень похожий на мой:
Сбой Application.ontime, когда другая книга открыта в «безопасном режиме»
Но ответ на самом деле неответ, так как это просто пропустит строку и заставит код не запускать OnTime.

Можно ли что-либо сделать, чтобы разрешить запуск Application.OnTime, даже если у меня открыт другой файл в безопасном режиме?

1 Ответ

1 голос
/ 23 сентября 2019

Я думаю, что решение здесь заключается в открытии этой конфликтующей книги в другом экземпляре Excel, поэтому другие файлы на нее не будут влиять.

Чтобы вручную открыть новый экземпляр Excel, удерживайте клавишу ALT инажмите на значок Excel.Но в вашем случае, если файл используют несколько человек, тогда все должны это сделать.

Я искал способ создания файла BAT, который открывает этот файл в новом экземпляре, но яПолностью noob о командах ms-dos, поэтому я публикую этот ответ и надеюсь, что кто-то может помочь.

Создать BAT-файл очень просто: просто создайте TXT, введите команды, сохраните его и измените расширение файла.BAT.

Имейте в виду, что я использую мои пути к ПК, поэтому вам нужно адаптировать его к своим путям.Я много чего перепробовал, но не справился с этим:

  1. "C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE" откроет Excel в новом экземпляре .
  2. start "excel.exe" "C:\filepath\yourfile.xlsx" откроет файл, но в активный экземпляр .Если экземпляра нет, он создаст новый, но это не сработает так, как вам нужно
  3. "filepath\yourfile.xlsm" сделает то же, что и шаг 2

Так что я 'мы не смогли найти точные команды.Но я почти уверен, что должен быть способ, которым BAT-файл открывает новый экземпляр Excel (как в шаге 1) и открывает файл в этом экземпляре.

О вашем макросе, еще один снимок в темноте,но вы отправили У меня есть книга, которая запускается каждые x минут с Application.OnTime , не знаю, сколько раз вам нужно ее выполнить, но, возможно, с Task Scheduler вы можете автоматизироватьпроцесс, потому что планировщик задач получил возможность открывать файлы в новых экземплярах.

Извините, но не смог найти точные команды.Я могу открыть Excel в новом экземпляре (шаг 1), и я могу открыть определенный файл, но не могу объединить их оба.

Надеюсь, кто-то может помочь сэта часть, так что вы можете создать BAT-файл для выполнения этой конфликтующей рабочей книги в другом экземпляре, просто дважды щелкнув по этому BAT-файлу (так что всем не нужно будет помнить о ALT)

ВОЗМОЖНОЕ РЕШЕНИЕ 2: Другим способом будет выполнение этого файла Excel, но из другого приложения, поэтому вы можете создать новый экземпляр Excel из VBA.Я сделал простой файл Word, который создает и открывает файл Excel в новом экземпляре, чтобы вы могли работать с остальными файлами Excel.Код должен быть в событии Document_Open.

Private Sub Document_Open()
Application.ScreenUpdating = False
Application.Visible = False
Dim ExcelAPP As Object
Dim ThisWB As Object
Set ExcelAPP = CreateObject("Excel.Application")
ExcelAPP.Visible = False
Set ThisWB = ExcelAPP.Workbooks.Open("filepath\yourfile.xlsm")
ThisWB.Close False
DoEvents
ExcelAPP.Quit
Application.ScreenUpdating = True
Application.Visible = True
Application.Quit False
End Sub

Так что, просто открыв этот файл слова, ваш файл Excel будет выполнен в новом экземпляре и не будет виден.

KNOWN FAILS: Этот способ хорош, если у вас уже открыт экземпляр Excel, но если нет открытого файла Excel (вы закрываете все из них), вы выполняете этот код, а затем открываете файл Excel, Excelфайл будет открыт в этом невидимом экземпляре, поэтому он не идеален.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...