it-swarm-pt.tech

Acesse o VBA | Como substituir partes de uma string por outra string

Estou tentando criar um pedaço de código que substitui um Word por outro. Exemplo: Substitua Avenue por Ave e North por N. Estou usando o MS Access, poderia usar a função SQL REPLACE, mas desejo fazer isso no VBA usando o módulo Access para poder anexar a função a outra coluna.

Não sei por onde começar com isso, portanto qualquer contribuição será muito apreciada.

Cara

41
Asynchronous

Use a função VBA do Access Replace(text, find, replacement) :

Dim result As String

result = Replace("Some sentence containing Avenue in it.", "Avenue", "Ave")
60
Mitch Wheat

Eu estava lendo este tópico e gostaria de adicionar informações, embora certamente não seja mais oportuna para o OP.

BiggerDon acima mostra a dificuldade de substituir "North" por "N". Um problema semelhante existe entre "Avenida" e "Avenida" (por exemplo, "Avenida das Américas" se torna "Avenida das Américas": ainda compreensível, mas provavelmente não o que o OP deseja.

A função replace () é totalmente livre de contexto, mas os endereços não. Uma solução completa precisa ter lógica adicional para interpretar o contexto corretamente e, em seguida, aplique replace () conforme necessário.

Os bancos de dados geralmente contêm endereços e, por isso, gostaria de salientar que a versão generalizada do problema do OP aplicada aos endereços nos Estados Unidos foi abordada (humor!) Pelo Sistema de Suporte à Precisão de Codificação (CASS). O CASS é uma ferramenta de banco de dados que aceita um endereço dos EUA e o completa ou corrige para atender a um padrão definido pelo Serviço Postal dos EUA. A entrada da Wikipedia https://en.wikipedia.org/wiki/Postal_address_verification possui o básico e mais informações estão disponíveis nos Correios: https://ribbs.usps.gov /index.cfm?page=address_info_systems

3
Dave 2.71828

Você também pode usar uma função semelhante a essa, permitindo adicionar em diferentes casos em que você deseja alterar valores:

Public Function strReplace(varValue As Variant) as Variant

    Select Case varValue

        Case "Avenue"
            strReplace = "Ave"

        Case "North"
            strReplace = "N"

        Case Else
            strReplace = varValue

    End Select

End Function

Então seu SQL leria algo como:

SELECT strReplace(Address) As Add FROM Tablename
2
Matt Donnan

Como a sequência "Norte" pode ser o início de um nome de rua, por exemplo, "Northern Boulevard", as direções das ruas estão sempre entre o número da rua e o nome da rua e são separadas do número da rua e do nome da rua.

Public Function strReplace(varValue As Variant) as Variant

Select Case varValue

    Case "Avenue"
        strReplace = "Ave"

    Case " North "
        strReplace = " N "

    Case Else
        strReplace = varValue

End Select

End Function
2
BiggerDon