Note: The other languages of the website are Google-translated. Back to English

Как отслеживать изменения, не делясь книгой?

Обычно, когда вы применяете функцию отслеживания изменений в Excel, книга будет доступна одновременно, это будет раздражать, потому что некоторые функции в Excel будут отключены. Как можно было отслеживать изменения, не делясь книгой? Здесь я порекомендую вам код VBA.

Отслеживайте изменения без предоставления общего доступа к книге с помощью кода VBA


стрелка синий правый пузырь Преобразование текста в таблицу в Outlook

У вас нет прямого способа решить эту проблему, но вы можете применить гибкий код VBA для ее решения, пожалуйста, сделайте следующее:

1. Щелкните правой кнопкой мыши вкладку листа, которую вы хотите отслеживать измененные ячейки, и выберите Просмотреть код из контекстного меню во всплывающем Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код в пустое Модули:

Код VBA: отслеживание изменений без предоставления общего доступа к книге:

Private Sub Worksheet_Change(ByVal Target As Range)
  'Updateby Extendoffice
    Const xRg As String = "A1:Z1000"
    Dim strOld As String
    Dim strNew As String
    Dim strCmt As String
    Dim xLen As Long
    With Target(1)
        If Intersect(.Cells, Range(xRg)) Is Nothing Then Exit Sub
        strNew = .Text
        Application.EnableEvents = False
        Application.Undo
        strOld = .Text
        .Value = strNew
        Application.EnableEvents = True
        strCmt = "Edit: " & Format$(Now, "dd Mmm YYYY hh:nn:ss") & " by " & _
        Application.UserName & Chr(10) & "Previous Text :- " & strOld
        If Target(1).Comment Is Nothing Then
            .AddComment
        Else
            xLen = Len(.Comment.Shape.TextFrame.Characters.Text)
        End If
        With .Comment.Shape.TextFrame
            .AutoSize = True
            .Characters(Start:=xLen + 1).Insert IIf(xLen, vbLf, "") & strCmt
        End With
    End With
End Sub

документ изменить трек без предоставления доступа 1

Внимание: В приведенном выше коде A1: Z1000 - это диапазон данных, изменения которого вы хотите отслеживать.

2. Затем сохраните и закройте это окно кода, теперь, когда вы изменяете значения в любых ячейках в пределах указанного диапазона, который вы установили в коде, ячейки будут отслеживаться, и к книге не будет предоставлен общий доступ. Смотрите скриншот:

документ изменить трек без предоставления доступа 2


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (14)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Отличная работа. К сожалению, есть некоторые проблемы с вашим кодом. - Это добавит комментарий даже к первой записи ячейки. Как я могу отслеживать изменения из второй записи, а не из первой? - Как только я ввожу значение в ячейку, я не могу сделать «Отменить». - Это не работает с таблицами. Попробуйте использовать на столе, затем попробуйте добавить или удалить необработанный код, и код выйдет из строя. Я действительно хотел бы иметь знания, чтобы заставить код работать так, как я хочу, как описано выше.
Этот комментарий был сведен к минимуму модератором на сайте
У меня такая же проблема. Кнопки "Отменить" и "Повторить" больше не работают. Есть ли какое-нибудь решение для этого?
Этот комментарий был сведен к минимуму модератором на сайте
Я попытался использовать этот код VBA в своем листе Excel. Но это дало мне ошибки. Я не знаю, откуда должен вызываться этот макрос и каков аргумент функции, которую вы указали при ее вызове.
Этот комментарий был сведен к минимуму модератором на сайте
Есть ли способ записать изменения для всех вкладок в книге и записать изменения в новую электронную таблицу? ЭТО было бы здорово ... и я не могу найти в Интернете никакой информации об этом типе процесса отслеживания.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, jfjoyner! Чтобы изменить этот код для всех листов и записать изменения отслеживания на другой лист, используйте приведенный ниже код:
Примечание. Поместите этот код в модуль ThisWorkbook.
Option Explicit
Dim mStrRgAddress As String
Dim mStrRgValue As String

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Const xRg As String = "A1:Z1000"
Const xSheetName As String = "Record sheet" 'The sheet that you want to put the track changes, please change the sheet name to your own.
Dim strOld As String
Dim strNew As String
Dim strCmt As String
Dim xLen As Long
Dim xSheet As Worksheet
Dim xRgCell As Range
Dim xRgCell2 As Range
On Error Resume Next
Set xSheet = Application.Sheets.Item(xSheetName)
If mStrRgAddress <> "" Then
Set xRgCell = Range(mStrRgAddress)
If xRgCell.Text <> mStrRgValue Then
strCmt = mStrRgAddress & " : " & Format$(Now, "dd Mmm YYYY hh:nn:ss") & " by " & _
Application.UserName & Chr(10) & "Previous Text :- " & mStrRgValue
Set xRgCell2 = xSheet.Range("a1048576").End(xlUp)
If xRgCell2.AddressLocal = xSheet.Range("A1").AddressLocal Then
If xRgCell2.Value <> "" Then
Set xRgCell2 = xRgCell2.Offset(1, 0)
End If
Else
Set xRgCell2 = xRgCell2.Offset(1, 0)
End If
xRgCell2.Value = strCmt
End If
End If
If xSheet.Name = Sh.Name Then Exit Sub
mStrRgValue = Target.Text
mStrRgAddress = Target.AddressLocal(False, False, , True)
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо, это здорово, но я не могу заставить его работать. Я предполагаю, что он запускается автоматически, то есть не нужно нажимать «Выполнить»? Я переименовал рабочий лист, чтобы сказать {--TRACK_CHANGES--}, чтобы следовать инструкциям, которые вы оставили зеленым. Пока ничего не записывает. Спасибо.
Этот комментарий был сведен к минимуму модератором на сайте
Еще раз спасибо, skyyang. Я также заметил, что, когда я вставил это в модуль для этой рабочей книги, моя большая электронная таблица начала непрерывно рассчитывать и не останавливалась. Я ничего не знаю о программировании VBA, но я нашел это обсуждение на ту же тему. Это может объяснить, почему вычисления продолжаются бесконечно. https://www.mrexcel.com/board/threads/continuous-calculation-wont-stop.1179541/page-6#posts 
Проблема на этом веб-сайте была:Но как только возникает проблема с непрерывными вычислениями, она сохраняется. Нажатие клавиши Esc прерывает расчет, но он начинается снова, если я не переключусь на ручной расчет. Ручной режим расчета работает нормально, пока я не запустил какой-либо из макросов, который затем заканчивается повторным включением AutoCalc... Я просмотрел каждый рабочий лист в модели и выполнил проверку ошибок, но безрезультатно.
Их вывод был следующим: Это правда: как только вы обращаетесь к объекту формы или его свойству (frmBudget.startupposition = 3) - объект затем загружается до тех пор, пока вы его не выгрузите или не сбросите свой проект (потеря состояния - в этот момент ВСЕ переменные сбрасываются и любые значения потеряны)
Этот комментарий был сведен к минимуму модератором на сайте
Привет jfjoyner3, как дела. Как вы можете видеть на двух снимках экрана, я изменил «лист записи» на «лист2» ​​в коде VBA. 
Затем я вернулся к книге Excel. После того, как я внес некоторые изменения в лист1, все эти изменения записываются в лист2.
Что касается проблемы с непрерывным расчетом, не могли бы вы прислать нам скриншоты или видео вашей проблемы? Таким образом, мы можем полностью понять, что здесь происходит. Спасибо! 
С уважением, Мэнди
Этот комментарий был сведен к минимуму модератором на сайте
Большое спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте jfjoyner3, добро пожаловать. После того, как вы сохраните электронную таблицу с кодом макроса VBA, макрос будет запускаться автоматически каждый раз, когда вы открываете электронную таблицу. Нет необходимости запускать его вручную. Любой вопрос, пожалуйста, не стесняйтесь обращаться к нам. Хорошего дня! С уважением, Мэнди   
Этот комментарий был сведен к минимуму модератором на сайте
MandyZhou, спасибо. Этот макрос запускается автоматически, когда я открываю электронную таблицу? Или я должен запустить его вручную? 
Проблема непрерывного расчета связана с другим приложением. 
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте, jfjoyner3! Во-первых, после того, как вы скопируете наш код VBA в модуль ThisWorkbook, код запустится автоматически. Во-вторых, наш код VBA работает. Пожалуйста, посмотрите два скриншота, которые я загрузил в этом комментарии.
Этот комментарий был сведен к минимуму модератором на сайте
Mandyzhou, Еще раз спасибо за такое подробное руководство. Я получаю синтаксическую ошибку, и она указывает мне на эту строку:

Если mStrRgAddress <> "" Тогда

Можете ли вы помочь изменить это и удалить синтаксическую ошибку?
Спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Отслеживает ли этот макрос изменения значений формулы каждый раз при обновлении моей модели данных?
Здесь еще нет комментариев
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL