script VB para localizar e substituir usando a tabela de consulta

1

Eu tenho uma planilha que eu preciso anonimizar para uma auditoria (nomes de usuário, nomes de host, endereços IP, etc.)

Estou tentando executar uma tarefa de localizar e substituir em uma pasta de trabalho inteira, criei uma tabela de pesquisa que tem uma coluna 'localizar' (os dados a serem encontrados) e uma coluna 'substituir' (os dados que serão substituir os dados na coluna um).

Eu tenho usado o script VB abaixo, que funciona para uma única planilha, mas eu preciso pesquisar toda a pasta de trabalho (além de uma planilha que contém a tabela de pesquisa), a planilha tem 76 folhas no total.

Eu referenciei a única planilha abaixo, e estou procurando substituí-la por uma entrada para fazer referência a todas as planilhas, exceto uma, dentro da pasta de trabalho. A tabela de consulta está contida na pasta de trabalho na folha final, portanto, não a inclua no 'find'.

Qualquer ajuda sobre isso seria muito apreciada. Se você precisar de alguma informação adicional, por favor me avise. Muito obrigado antecipadamente.

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
    
por Nicky G 12.06.2018 / 14:49

1 resposta

0

É apenas uma questão simples de substituir a única referência da planilha por um loop externo adicional:

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

A planilha da tabela de consulta é excluída pelo nome.

    
por 12.06.2018 / 15:14