1

У меня есть электронная таблица, которую нужно анонимировать для аудита (имена пользователей, имена хостов, IP-адреса и т.д.)

Я пытаюсь запустить задачу поиска и замены для всей книги, я создал таблицу поиска, в которой есть столбец «найти» (данные, которые нужно найти) и столбец «заменить» (данные, которые заменят данные в первом столбце).

Я использовал приведенный ниже скрипт VB, который работает для одного листа, но мне нужно выполнить поиск по всей книге (кроме одного листа, который содержит таблицу поиска), в общей сложности в книге 76 листов.

Я ссылался на один лист ниже, и я собираюсь заменить его на запись, которая будет ссылаться на все листы, кроме одного, внутри книги. Таблица поиска содержится в рабочей книге на последнем листе, поэтому не следует включать ее в «поиск».

Любая помощь по этому вопросу будет принята с благодарностью. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Спасибо заранее.

Sub abbrev()

Dim abvtab() As Variant
Dim ltsheet As Worksheet
Dim datasheet As Worksheet
Dim lt As Range

Set ltsheet = Sheets("sheet2")


' REFERENCE TO SINGLE WORKSHEET
Set datasheet = Sheets("ACTIVE_DIRECTORY_User")

Set lt = ltsheet.Range("A2", ltsheet.Range("B2").End(xlDown))

abvtab = lt

For i = 1 To UBound(abvtab)
    datasheet.Cells.Replace What:=abvtab(i, 1), Replacement:=abvtab(i, 2), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False

Next i

End Sub

1 ответ1

0

Просто замените ссылку на один лист на дополнительный внешний цикл:

Sub abbrev()

  Dim abvtab() As Variant
  Dim ltsheet As Worksheet
  Dim datasheet As Worksheet
  Dim lt As Range
  Dim i As Long

  Set ltsheet = Sheets("sheet2")


  ' REFERENCE TO SINGLE WORKSHEET
'  Set datasheet = Sheets("ACTIVE_DIRECTORY_User")

  Set lt = ltsheet.Range("A2", ltsheet.Range("B2").End(xlDown))

  abvtab = lt

  For Each datasheet In Worksheets
    If datasheet.Name <> ltsheet.Name Then
      For i = 1 To UBound(abvtab)
        datasheet.Cells.Replace What:=abvtab(i, 1), Replacement:=abvtab(i, 2), LookAt:=xlPart, _
          SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
          ReplaceFormat:=False

      Next i
    End If
  Next datasheet

End Sub

Лист таблицы поиска исключен по имени.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .