У меня есть рабочая книга Excel с макросами (master.xlsm), и к этим макросам можно получить доступ из других книг через настраиваемую панель инструментов в Excel. ранее, когда обычная книга открывается и получает доступ к одному из этих макросов на пользовательской панели инструментов,
теперь с недавним обновлением 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
Макросы запускаются, если открыт исходный файл макросов. что раньше происходило автоматически. теперь это стало ручным.
Ну, я бы начал с проверки, работают ли "открытые" макросы в "master.xlsm" примерно так:
Это, вероятно, не решит вашу проблему, но может пролить свет на то, в чем проблема.
Также размещение здесь некоторого кода в master.xlsm поможет
добавил несколько снимков экрана, подтверждает, что макросы в порядке и могут выполняться при открытии исходного файла. но ранее, если исходный файл не открыт, сначала он открывается в фоновом режиме и выполняется. кажется, что он теряет некоторый уровень разрешений с обновлением
Ну, вы можете запустить макрос в 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
нет, обычные рабочие книги не поддерживают макросы, поэтому я не могу размещать там коды vba. пользовательская панель инструментов пытается напрямую получить доступ к макросам. помните, что раньше он работал более 2 лет.
Если ваш код запускается из пользовательской панели инструментов, вам следует подумать о том, чтобы поместить его в PERSONAL.XLSB, чтобы он работал: см. Скопируйте свои макросы в личную книгу макросов • Я предполагаю, что у вас была master.xlsm
автоматическая загрузка при запуске Excel в вашей предыдущей установке, но вы не помните об этом.
этот подход, чтобы убедиться, что макросы видны для всех книг при каждом открытии Excel, я понимаю. таким образом, я не могу экспортировать пользовательскую панель инструментов и работать на другом компьютере, так как необходимо вручную перенести все макросы на новый компьютер и поместить в перемещаемую папку, а также изменить путь всех макросов пользовательской панели инструментов в перемещаемую папку нового пользователя. по этой причине мастер-файл находился в папке c:\master, чтобы все пользователи этой панели инструментов и макроса могли легко его адаптировать.
@MaheshUddama, тогда вам, вероятно, следует создать надстройку или использовать эта техника
в худшем случае я попробую, прямо сейчас я ожидаю найти исправление разницы, сделанной в недавнем обновлении, возможно, исключение безопасности, редактирование реестра или изменение политики. потому что он работал долгое время даже с офисом 365, начиная с офиса 2013.
в конце концов, Microsoft признала, что это проблема в ежемесячном и ежемесячном (целевом) каналах Office 365, и они уже исправили ее в ежемесячном целевом канале и ждут исправления ежемесячного канала. очевидно, что эта проблема не затронула полугодовые и годовые каналы, потому что они приносят самые стабильные обновления из месячных каналов в полугодовые и годовые каналы. Я думаю, что лучше выбрать канал полугодовых или ежегодных обновлений, если у вас малый бизнес и вы не с нетерпением ждете каждого обновления сразу же каждый месяц.
Обзор каналов обновления https://docs.microsoft.com/en-us/deployoffice/overview-of-update-channels-for-office-365-proplus#visual-representation-of-the-update-channels-for-office-365- избыток
Прежде всего проверьте, запускаются ли макросы вообще. Добавьте тест
Sub
в этот файл, пусть он выдаст окно сообщения, напримерMsgBox "I run!"
, и запустите процедуру. Если вы не видите поле, значит проблема с безопасностью макросов. Если вы видите это поле, проблема связана с вашим файлом или кодом.