Перестали работать макросы из другой книги после обновления офиса - PullRequest
0 голосов
/ 12 июня 2019

У меня есть книга Excel с макросами (master.xlsm), и эти макросы могут быть доступны для других книг через пользовательскую панель инструментов в Excel. ранее, когда обычная рабочая книга открывается и обращается к одному из этих макросов на пользовательской панели инструментов,

  1. если master.xlsm еще не открыт, то он открывается в фоновом режиме и выполняет макрос для обычной рабочей книги
  2. если master.xlsm уже открыт, то выполнить макрос напрямую в обычную книгу.

теперь с последним обновлением Office 365 метод (1) заблокирован. поэтому я должен вручную открыть master.xlsm для выполнения макросов.

теперь в (1) это показывает,

[невозможно запустить макрос «C: \ Main \ master.xlsm '! Macro1» макрос может быть недоступен или все макросы могут быть отключены]

Пробовал на другом ПК, с обновленной версией Windows 10 и обновленной версией Office 365. это работает, и встроенная версия Office 365 на рабочем компьютере - MSO (16.0.11328 ....), а неисправный компьютер - MSO (16.0.11727 ....). Это может быть очевидной причиной, но обе версии Office 365 устарели.

оба компьютера имеют одинаковые уровни безопасности макросов, и местоположение master.xlsm добавлено в качестве надежного расположения в расположениях центра доверия Excel.

также обновление назад неисправный ПК также работал, поэтому все файлы и настройки идентичны.

мой вопрос изменил ли критерии безопасности в Excel vba? или как решить без понижения офисной версии.

под изображением 1, когда master.xlsm не открывается, поэтому выдает ошибку изображение 2, когда master.xlsm открыт, поэтому он выполняет макрос и вставляет текст в book1.xlsx

, когда мастер xlsm не открыт

при открытии master xlsm

Ответы [ 3 ]

0 голосов
/ 13 июня 2019

Хорошо, вы можете запускать макрос только в master.xlsm, когда он открыт.Если он закрыт, вы не можете запустить макрос в нем, вам нужно сначала открыть его.Например, используйте метод Workbooks.Open , чтобы открыть его первым.

Dim MasterWb As Workbook

On Error Resume Next 'test if master.xlsm is already open
Set MasterWb = Workbooks("master.xlsm")
On Error Goto 0

If MasterWb Is Nothing Then 'if it was closed open/run/close it
    Set MasterWb = Workbooks.Open("C:\Main\master.xlsm")
    Application.Run "master.xlsm!macro1"
    MasterWb.Close SaveChanges:=False
Else 'if it was already opened just run macro and don't close it (or you might loose changes that were already made)
    Application.Run "master.xlsm!macro1"
End If
0 голосов
/ 05 июля 2019

В конце концов Microsoft согласилась с тем, что это проблема в ежемесячных и ежемесячных (целевых) каналах Office 365, и они уже исправили ее в целевом ежемесячном канале и ожидают исправления ежемесячного канала.очевидно, полугодовые и годовые каналы не были затронуты этой проблемой в первую очередь из-за того, что они приносят наиболее стабильные обновления из ежемесячных каналов в полугодовые и годовые каналы.Я думаю, что хорошо выбрать полугодовой или годовой канал обновления, если вы являетесь малым бизнесом и не с нетерпением ждете каждого обновления сразу каждый месяц.

Ответ https://answers.microsoft.com/en-us/msoffice/forum/msoffice_excel-mso_win10-mso_o365b/macros-from-another-workbook-stopped-working-after/9779bd5f-e858-4213-9ea6-95597e867a07?messageId=4d2e3ce7-350d-4bfd-82b2-f54c8654016e&page=1

Обзор каналов обновления https://docs.microsoft.com/en-us/deployoffice/overview-of-update-channels-for-office-365-proplus#visual-representation-of-the-update-channels-for-office-365-proplus

0 голосов
/ 12 июня 2019

Ну, я бы начал с проверки, работает ли макрос "open" в "master.xlsm" примерно так:


Thisworkbook_open


Это, вероятно, не решит вашу проблему, но может показать некоторый свет в том, где проблема

Также размещение здесь некоторого кода в master.xlsm поможет

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