Так у Вас даже VBA не установлен - Вам нужен установщик офиса, чтобы доустановить компонент VBA. Без этого компонента Вы ни один файл с макросами не сможете сейчас открыть - хоть Excel 4, хоть более современный.. Обычно так урезают версии офиса для студентов.
вообще или может предупреждение какое-то появляется? По умолчанию может в настройках безопасности Excel установлено блокировать такие файлы. Посмотрите здесь: Файл -Параметры -Центр управления безопасностью -Параметры центра управления безопасностью -Параметры блокировки файлов. Найдите там Листы Excel 4 и Книги Excel 4, поставьте галочки на "Открыть" и ниже укажите "Открывать ...(чего-то там на Ваш выбор)". Перезапустите Excel. Попробуйте открыть нужный файл.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Так ответ в вопросе: открыть и переписать на VBA. Иначе никак не получится, т.к. нет никаких конвертеров с языка листа макросов на более современный VBA.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
написал: но вопрос поставлен кристально четко: почему приведенный макрос не работает
кристально четкий ответ: это ограничение при общем доступе. Все. Нет вариантов, кроме снятия общего доступа. Ну или как вариант - просто скрывать вновь созданный лист. Выглядеть будет как будто листы не добавляются. Так себе решение, но другого нет. Потом можно будет удалить(регламент на правки какой-то установить, например):
Код
Private Sub Workbook_NewSheet(ByVal Sh As Object)
With Application
.ScreenUpdating = False
.DisplayAlerts = False
Sh.Visible = 2
.DisplayAlerts = True
.ScreenUpdating = True
End With
MsgBox "disable to add sheets"
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
В таких случаях обычно сокращают большие диапазоны внутри формулы на 3-5 ячеек, чтобы через Вычислить формулу можно было проследить логику вычислений. Так же помогает разбиение формулы на блоки, чтобы определить, верно ли каждый блок отрабатывает.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Ну тогда живите с другими двумя проблемами - других вариантов все равно нет Если не наворачивать всякие VBA-плюшки, конечно. Ну, лично мне сходу в голову точно ничего не приходит. Но можно просто перед обводкой убирать галку "Игнорировать пустые ячейки", а потом её возвращать(есть удобная галочка "Распространить на другие ячейки с тем же условием", чтобы не искать все подобные ячейки и не поломать условия).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
написал: По умолчанию данной функции, ячейки стали защищёнными от ввода отличающиеся от Списка информации
как это понимать? Я смысл что-то не уловил.
Цитата
написал: Но по столбцу Е эта защита ввода не работает.
зайдите в параметры списка(Данные - Проверка данных) и снимите галочку с "Игнорировать пустые ячейки". Тогда и обводка неверных данных заработает и блокировка ввода этих неверных данных.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Обычно так происходит, если в тексте ячейки изначально присутствует один из символов переноса текста. Т.к. символов несколько - дать однозначную рекомендацию по его удалению сложно. Но есть пара вариантов: Вариант 1: Применить функцию ПЕЧСИМВ. Хотя тут может быть засада: если переносы без пробелов, применение ПЕЧСИМВ может привести в том числе к искажению смысла текста(слова "слипнутся").
Вариант 2: убрать наиболее часто встречающиеся переносы при помощи ПОДСТАВИТЬ:
Вариант 3: Ручное удаление при помощи функции Найти заменить. Вызываете форму Найти заменить(Главная -Найти и выделить -Заменить или сочетание клавиш Ctrl+H). Ставите курсор в поле Найти и нажимаете сочетание клавиш Ctrl+J. Заменить все. Ну и макросами тоже можно.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
выше в посте #7 от 24.04.2017 есть ссылка - там разъясняется куда надо записать код, чтобы такого не происходило. Я бы дал подсказку на точное место в статье, но лучше будет, если ознакомитесь полностью.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
По сути правильнее всего один из двух вариантов: 1. Для каждой кнопки в вып.спике сделать запрос пароля(через функцию, например). И в зависимости от этого выполняется или нет действие 2. Делать авторизацию при входе в файл и в зависимости от пользователя отображать только нужные элементы на ленте. А сделать доступным или нет вып.список по паролю по сути нельзя, ибо если один раз ошиблись паролем - элемент будет недоступен и для его доступности придется перезапускать файл.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Voltz написал: Ну вот на кнопку я повешу такой код
на какую? Вы разобрались с обратными вызовами для кнопок на Ribbon-ленте? Может тогда и вопросов меньше будет. Вот, ознакомьтесь - может что-то прояснится: Создание собственного меню надстройки для версий 2007 и выше Попробуйте сначала для кнопки сделать пароль, а уже потом можно и про вып.список говорить детальнее.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Это делается внутри кода, а не внутри схемы XML. Делаете обратный вызов на кнопку и в этом вызове уже код запроса пароля. Процедуры обратного вызова Ribbon XML Editor может делать автоматически, Вам только коды обработки в них останется прописать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Валерий написал: письмо не создает и файл не прикрепляет
а как Вы это поняли, если у Вас команда Send закомментирована? Ведь тогда письмо просто где-то создано, но не выведено на экран и не отправлено. Поставьте вместо .Send - .Display и тогда письмо после создания будет отображено. Плюс, Application.GetOpenFilename лучше вызывать отдельно и проверять, выбрано ли там что-то.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Так если на рабочий ПК нельзя ничего нового установить - то вариантов нет. PQ это часть офиса, она должна быть установлена. И если у Вас есть возможность работать с PQ только из дома, а доустановить её не можете - только если через удаленное управление рабочим столом. Например, через AnyDesk. Там можно настроить отдельные ПК, которые могут подключаться без подтверждения входа. При этом есть Anydesk WEB - т.е. просто подключаетесь через браузер. Сам не пользовался именно веб-версией, но это скорее всего единственный вариант для Вас.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Думаю, это Ваша история: Видимое значение ячейки в реальное Если ко всем ячейкам применен один формат - можно без макросов, функцией ТЕКСТ(в статье написано как это сделать). Если для разных ячеек может быть разный формат - придется погрузиться в тему макросов и VBA, но по сути надо будет только скопировать коды из статьи и правильно применить.
ага. А при переходе в другой открытый файл что должно происходить? Или если пользователь попутно решит еще один файл открыть, не закрывая Ваш? В общем и целом - нюансов куча и все их надо предусматривать.
Цитата
написал: код Дмитрия Щербакова выдает ошибку
У меня не выдает ошибок, я же тоже код перед тем как выложить проверил. Если лист не защищен, то все отработает как положено и будет применено к первому листу в файле с кодом. В таких случаях лучше прикладывать файл с кодом, на котором ошибка появляется - иначе можно долго гадать в чем именно причина ошибки.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
написал: Замены производятся исключительно в выделенных на листе ячейках
что мешает Selection заменить на что угодно другое? На всех листах - цикл никто не отменял, примеров на форуме куча. Вместо этого блока:
Код
'заменяем
For lr = 1 To UBound(avArr, 1)
s = avArr(lr, lToFindCol)
If Len(s) Then 'если значение для замены не пустое
Selection.Replace s, avArr(lr, lToReplaceCol), lLookAt
End If
Next lr
нужно записать так:
Код
'заменяем
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "Соответствия" Then
For lr = 1 To UBound(avArr, 1)
s = avArr(lr, lToFindCol)
If Len(s) Then 'если значение для замены не пустое
ws.Cells.Replace s, avArr(lr, lToReplaceCol), lLookAt
End If
Next lr
End If
Next
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Да, для он-лайн это действительно так. Что весьма странно и не логично. Но если давать общий доступ при помощи инструмента прежних версий(Общий доступ к файлу) - то для каждого пользователя сохраняются свои условия фильтрации. Если вдруг не можете найти инструмент прежних версий в своем Excel: Отслеживание изменений при помощи встроенных средств - Общий доступ к книге
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Без макросов такое не сделать вообще никак. Даже макросами все изменения отслеживать достаточно сложно так, чтобы ничего не потерять в какой-то момент.
Цитата
Дмитрий написал: Это нужно для одновременной работе с фильтрами
одновременная работа с фильтрами одной таблицы достаточно хорошо реализована в общем доступе в том же он-лайн Excel и Гугл-таблицах. И макросы там не нужны.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...