Страницы: 1
RSS
Отказ в редактировании макроса, Изменение структуры макроса
 
Добрый день!
заметил такой глюк: после записи макроса его можно изменить только через "ВОЙТИ", при попытке нажать кнопку "ИЗМЕНИТЬ МАКРОС" выскакивает окно с надписью" Изменить макрос в скрытой книге невозможно. Закройте все документы и выберите команду "ПОКАЗАТЬ" в меню "ФАЙЛ",
а там, в меню "ФАЙЛ" такого близко нет
эксель 2010
Уважаемые что я делаю не так?
 
Макрос расположен в личной книге макросов(PERSONAL)? Если перейти на вкладку Вид -Окно -Отобразить - будет там такая книга и изменится ли что-то, если её отобразить?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
И что? так просто? Я ждал что-то супер-пупер...
Я сделал так как вы посоветовали и всё заработало!
Значит она ругалась на скрытую книгу личных макросов
Спасибо огромное!

а вот само сообщение почему такое?-" Изменить макрос в скрытой книге невозможно. Закройте все документы и выберите команду "ПОКАЗАТЬ" в меню "ФАЙЛ"?
 
Это уже не ко мне - так сообщение перевели в microsoft. Не забывайте скрывать эту книгу перед выходом - она должна быть скрыта.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Простите пожалуйста что реанимирую старую тему. Начала появляться аналогичная ошибка. Днем ранее ничего подобного не наблюдал. Вчера назначил горячие клавиши одному из макросов. при закрытии ответил "не сохранять". Сегодня не дает изменить. Как-нибудь можно избежать постоянного скрытия-отображения книги?
 
VideoAlex, только пересохранить макрос в новый файл и каждый раз запускать файл с нужным макросом. Я так делал :(  
 
Цитата
VideoAlex написал:
Как-нибудь можно избежать постоянного скрытия-отображения книги?
Храните все свои макросы в надстройке и проблем не будет.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Здравствуйте.
И вот спустя 5 лет эта тема поднимается)

Мне выдает точно такую же ошибку и указывает на последнюю строчку, которая перед End sub.
Макрос нужен для описания собственной функции и таких несколько для разных функций. Все уже сохранено в виде надстройки, поэтому при открытии нового процесса Excel'я выдает эту ошибку. Подскажите, пожалуйста, что именно не так? Потому что я не вижу то, из-за чего эта строчка проблемная
Код
Sub НижПодч_Описание()
    Application.MacroOptions _
            Macro:="НижПодч", _
            Description:="Если ячейка не пустая, ставит '_' и текст", _
            Category:="MIT-Excel", _
            ArgumentDescriptions:=Array( _
                "ячейка для проверки", _
                "текст или ссылка на ячейку, которая будет отображаться как текст после '_'")
End Sub
Изменено: paulryler - 21.01.2026 10:59:58
 
Цитата
написал:
И вот спустя 5 лет эта тема поднимается)
Сделали ли то, что написано в первом ответе #2?
 
Не совсем. Дело в том, что не могу отобразить, потому что оно не дает это сделать.
Изменено: paulryler - 21.01.2026 11:25:42
 
Цитата
paulryler написал:
оно не дает это сделать
оно - это кто? Если запущено из надстройки - проблем быть не должно. Хоть одна книга на момент работы этого макроса открыта и видима?
И уточните текст ошибки - точно такая же как в первом посте или может быть иная? Почему спрашиваю - описание к аргументам через MacroOptions появилось только в 2010 Excel и в более ранних версиях будет выдавать ошибку.
Изменено: Дмитрий(The_Prist) Щербаков - 21.01.2026 11:51:13
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Оно - эксель. Книга открыта и видима с включенной надстройкой. "Отобразить" во вкладке окно просто серое.
Да, текст ошибки точно такой же. При нажатии на debug указывает на последнюю строку кода, который скидывал выше.

Может ли быть проблема из-за того, что я пишу новые функции напрямую в файл надстройки .xlam?
Изменено: paulryler - 21.01.2026 12:09:06
 
НижПодч_Описание находится в той же книге, что и НижПодч?
 
Да. Макрос с описанием прописан в том же модуле, что и сама функция.
 
paulryler,  написал:
Оно - эксель.
Странно, программа - она, программный продукт - он, но ни как не оно
Изменено: Msi2102 - 21.01.2026 12:32:53
 
Остается только предложить выложить сюда свою надстройку. Будем смотреть. Гадать дальше нет смысла.

Офф
Изменено: Дмитрий(The_Prist) Щербаков - 21.01.2026 12:35:18
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Вот файл надстройки. Пожалуй, стоило его сразу прикрепить.
Буду очень благодарен, если все проясните для меня!
 
Код
Sub НижПодч_Описание()
    Workbooks.Add (1)
    Application.MacroOptions _
            Macro:="НижПодч", _
            Description:="Если ячейка не пустая, ставит '_' и текст", _
            Category:="MIT-Excel", _
            ArgumentDescriptions:=Array( _
                "ячейка для проверки", _
                "текст или ссылка на ячейку, которая будет отображаться как текст после '_'")
    ActiveWorkbook.Close False
End Sub
Писали же
Цитата
написал:
Хоть одна книга на момент работы этого макроса открыта и видима?
 
О, заработало, спасибо большое!
Цитата
написал:
Писали же
Пожалуйста, интернет и так злобное место, не надо агрессии.
В сообщениях выше я ответил на вопрос, претензии не понимаю. А в первых сообщениях вообще ничего не писали про добавление в код тех строк, что вы добавили. А если подразумевали это, то я не понял этого, потому что в vba экселя только-только начал копаться и использовать его. Даже данный макрос для описания функций нашел, вроде как, на данном форуме, поэтому все, что сделал с этим кодом, это подстроил под свою функцию описание.
 
Цитата
paulryler написал:
А в первых сообщениях вообще ничего не писали про добавление в код тех строк,
про добавление строк нет, а вот про открыта ли на момент работы макроса хоть одна видимая книга - да. А это значит, что при остановке кода на этих строках Вы должны убедиться, что на заднем фоне Excel видна книга и лист с ячейками, а не серый фон :) Надстройка хоть и книга - но она является скрытой: т.е. листы и ячейки по умолчанию скрыты от пользователя и книга не отображается среди всех обычных книг.
Но Вы же написали
Цитата
paulryler написал:
Книга открыта и видима с включенной надстройкой
что и ввело всех в заблуждение, включая Вас самого.
Да и агрессии никакой нет было - Вам просто указали на то, что вопрос был задан конкретный и ответ на него было получен утвердительный. Хотя судя по коду - это не так. Вот и все. Теперь  будете знать что такое ВИДИМАЯ книга :)
Изменено: Дмитрий(The_Prist) Щербаков - 21.01.2026 13:46:37
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо большое, что объяснили принцип надстроек, потому что раньше не задумывался как они выполняются.
В самом начале я написал про "открытие нового процесса Excel". Тут мне стоило дополнить, что новый процесс является единственным. Тогда наверно все бы поняли, что видимой книги нет, т.к. книга открывается после запуска самого первого и единственного процесса Excel. Мой косяк в формулировке. Теперь понимаю почему вы задали вопрос про видимую книгу.
 
Цитата
paulryler написал:
открытие нового процесса Excel
я Вас удивлю, но даже если бы это был не первый процесс - разные процессы работают независимо. Или Вы не понимаете смысла слова "процесс" в контексте Excel. Допустим, Вы запустили Excel. Это первый процесс - "экземпляр1". Вы создали в нем новую книгу. Теперь в "экземпляр1" кол-во книг = 1. Далее Вы идете в меню программ и запускаете еще раз Excel - это будет второй процесс - "экземпляр2". И на момент запуска в нем нет ни одной книги. Единственная открытая книга пока что только в "экземпляр1".
Подытожим: не важно, сколько там у Вас процессов - проверять наличие видимых открытых книг необходимо в том, в котором выполняется код. Т.е. в конкретном  экземпляре Application. Я бы делал так - проверял бы наличие видимых книг и если их нет - создавал.
Код
Sub НижПодч_Описание()
    Dim wb As Workbook
    Dim lc&
    'проверяем наличие видимых окон книг в текщем экземпляре
    For Each wb In Application.Workbooks
        If wb.Windows(1).Visible Then
            lc = lc + 1
        End If
    Next
    
    If lc = 0 Then
        Set wb = Workbooks.Add(1)
    End If
    Application.MacroOptions _
            Macro:="НижПодч", _
            Description:="Если ячейка не пустая, ставит '_' и текст", _
            Category:="MIT-Excel", _
            ArgumentDescriptions:=Array( _
                "ячейка для проверки", _
                "текст или ссылка на ячейку, которая будет отображаться как текст после '_'")
    'можно и закрыть, но я бы оставил - запустили надстройку и создается новая книга
    'это удобно и более правильно - пустое окно обычно всех пугает :)
    'но если хочется пустое окно - то раскомментируйте
'    If lc = 0 Then
'        wb.Close 0
'    End If
End Sub

wb.Close 0 - спорный момент. Я бы не закрывал. Первая причина в комментах(многих пугает серое окно). А вторая более глобальная: может получиться так, что кроме надстройки и этой книги других открытых в приложении не окажется. И тогда при закрытии последней книги в некоторых версиях Excel это спровоцирует закрытие приложения полностью.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Читают тему
Наверх