Em muitos cenários de automação no Microsoft Access, é necessário manipular strings de texto extensas e formatá-las de maneira legível, especialmente em relatórios ou caixas de mensagem. A função BreakTextAtX fornece uma solução eficiente para esse problema, permitindo dividir um texto em várias linhas com base em um caractere delimitador e um comprimento máximo por linha.
O funcionamento básico da função se dá pela análise de uma string de texto original e sua subsequente segmentação. Ela utiliza um caractere especificado, como um espaço em branco (ou outro delimitador definido pelo usuário), para determinar onde dividir o texto. Isso é particularmente útil em casos onde se deseja evitar que palavras sejam cortadas no meio, mantendo a integridade semântica de cada linha gerada.
Public Function BreakTextAtX(varOriginal As Variant, _
Optional strBreakCharacter As String = " ", _
Optional lngMaxLength As Long = 72) As Variant
' Função para dividir um texto em linhas menores com um comprimento máximo definido
' varOriginal: Texto original a ser quebrado
' strBreakCharacter: Caractere usado para quebrar o texto (padrão: espaço em branco)
' lngMaxLength: Comprimento máximo de cada linha (padrão: 72 caracteres)
Dim strNewString As String ' Armazena o texto formatado
Dim strWorking As String ' Parte atual do texto sendo processado
Dim strPart As String ' Parte do texto após a quebra
Dim strOriginalNoCrLf As String ' Texto original sem quebras de linha
Dim lngPosition As Long ' Posição atual no texto
Dim lngHold As Long ' Posição da última ocorrência do caractere de quebra
Dim lngLength As Long ' Comprimento total do texto original
Dim lngWorkLength As Long ' Comprimento da parte atual do texto sendo processado
' Obtém o comprimento do texto original
lngLength = Len(varOriginal & "")
' Verifica se o texto original tem conteúdo
If lngLength > 0 Then
' Remove quebras de linha (vbCr e vbLf) do texto original
strOriginalNoCrLf = Replace(Replace(CStr(varOriginal), vbCr, ""), vbLf, "")
strNewString = "" ' Inicializa o texto formatado
lngPosition = 1 ' Começa na primeira posição do texto
' Loop para percorrer o texto original e dividir em partes menores
Do While lngPosition <= lngLength
' Extrai uma parte do texto de acordo com o comprimento máximo definido
strWorking = Mid(strOriginalNoCrLf, lngPosition, lngMaxLength)
lngWorkLength = Len(strWorking) ' Obtém o comprimento da parte extraída
' Verifica se o comprimento da parte extraída é menor que o comprimento máximo
If lngWorkLength < lngMaxLength Then
' Se o texto formatado já tem conteúdo, adiciona uma quebra de linha
If Len(strNewString) > 0 And Len(strWorking) > 0 Then _
strNewString = strNewString & vbCrLf
' Adiciona a parte final do texto e encerra o loop
strNewString = strNewString & strWorking
Exit Do
Else
' Procura pela última ocorrência do caractere de quebra
lngHold = InStrRev(strWorking, strBreakCharacter)
' Se não houver caractere de quebra, usa o comprimento total da parte
If lngHold = 0 Then lngHold = lngWorkLength
' Se o texto formatado já tem conteúdo, adiciona uma quebra de linha
If Len(strNewString) > 0 Then _
strNewString = strNewString & vbCrLf
' Adiciona a parte do texto até a posição do caractere de quebra
strNewString = strNewString & Left(strWorking, lngHold)
' Avança para a próxima parte do texto
lngPosition = lngPosition + lngHold
End If
Loop
' Retorna o texto formatado
BreakTextAtX = strNewString
Else
' Se o texto original for nulo, retorna nulo; caso contrário, retorna uma string vazia
If IsNull(varOriginal) Then
BreakTextAtX = varOriginal
Else
BreakTextAtX = ""
End If
End If
End Function
A aplicabilidade dessa função é vasta. Imagine que você precisa gerar relatórios que serão exibidos em caixas de texto de largura limitada, como em formulários de sistemas de inventário ou controle de estoque. Ao utilizar a função, o texto será formatado automaticamente em várias linhas, garantindo uma melhor apresentação e legibilidade. Isso pode ser usado tanto para exportação de relatórios quanto para visualizações dentro da interface do Access.
Outro exemplo prático seria o envio de notificações ou mensagens via e-mail, onde o limite de comprimento de uma linha pode ser crucial para manter a formatação correta. Em vez de manualmente ajustar o conteúdo, o código VBA faz isso de forma automática, adaptando-se ao tamanho máximo especificado pelo usuário e adicionando quebras de linha onde necessário.
Que tal aprender estes códigos também:
MS Access | Aplicando Função Concatenação de Valores nos Campos das Consultas
MS Access | Utilizando SendKeys de Forma Eficiente
MS Access | Automatizando a Compactação do Bancos de Dados
MS Access | Como Gerenciar Links das Tabelas
MS Access | Quebra de Texto em Linhas com Comprimento Máximo
MS Access | Monitoramento de Conexões de Usuários
MS Access | Mapeando 3.500 Erros com a Criação de Tabelas de Erros
MS Access | Código para Registro de Logs
MS Access | 17 Passos Essenciais para Melhorar seu Código VBA
MS Access | Código VBA para Backup de Todas as Tabelas Comentado
A função também lida de maneira robusta com situações em que o texto original contém quebras de linha (caracteres vbCr
e vbLf
), removendo-as antes de processar a string. Isso é especialmente útil quando se trabalha com dados importados ou exportados de outras fontes, garantindo que a formatação do texto final seja sempre consistente e previsível.
Por fim, a flexibilidade da função em permitir ao usuário definir tanto o caractere de quebra quanto o comprimento máximo de cada linha a torna aplicável em uma grande variedade de projetos e necessidades dentro do Access. Desde o controle de visualizações até a geração de relatórios, o BreakTextAtX facilita a manipulação de strings de texto de forma prática e eficiente.
Clique aqui e nos contate via What's App para avaliarmos seus projetos
Nenhum comentário:
Postar um comentário