SEM ACENTO

USUARIO.EXCLUIDOS 12/01/2005 16:05:21
#60304
Caros amigos.

Inicialmente gostaria de agrader a todos que prontamente me ajudaram, ainda hoje, quando postei uma pergunta, e aproveitando a boa vontade de todos novamente estou precisando da orientação dos amigos.

Tenho usado uma sub para evitar que os usuarios usem acentos em alguns forms, e para isso tenho usado a seguinte rotina:

Private Sub Form_KeyPress(KeyAscii As Integer)
Dim strChar

strChar = Chr(KeyAscii)

Select Case strChar
Case "à ", "À", "á", "à", "à¢", "Ó¡", "ã", "Ã", "à¤", "Ó¾"
strChar = "a"
KeyAscii = Asc(UCase(strChar))

Case "à¨", "È", "é", "é", "ê", "ÃÅ ", "à«", "Ë"
strChar = "e"
KeyAscii = Asc(UCase(strChar))

Case "à¬", "ÃÅ’", "í", "à", "à®", "ÃŽ", "à¯", "à"
strChar = "i"
KeyAscii = Asc(UCase(strChar))

Case "à²", "۪̉", "ó", "Ó“", "à'", "Ô", "õ", "Õ", "à¶", "Ö"
strChar = "o"
KeyAscii = Asc(UCase(strChar))

Case "à¹", "Ãâ„¢", "ú", "ÃÅ¡", "à»", "Ãâۼ", "à¼", "ÃÅ“"
strChar = "u"
KeyAscii = Asc(UCase(strChar))

Case "ç", "Ç"
strChar = "c"
KeyAscii = Asc(UCase(strChar))

Case "'", "ÂÂÂ'", "^", "~", "¨", ":", ";"
strChar = " "
KeyAscii = Asc(UCase(strChar))
''",",
Case "&"
strChar = "E"
KeyAscii = Asc(UCase(strChar))

Case Else
KeyAscii = Asc(UCase(strChar))

End Select


End Sub

Gostaria de saber se alguem pode me ajudar de como passar isso par um módulo ao invés de ficar colocando em cada form.

Desde já agradeço a todos

Abraços
USUARIO.EXCLUIDOS 12/01/2005 16:25:26
#60312
olha tem esse codigo aqui e só adaptar:

Citação:

'==================================================
'Substituir palavras com acentos por sem acentos
'Ex.: ã --> a
'==================================================
Public Const UM = 1


Public Function TiraAcentos(Texto As String)
On Error GoTo Trata_erro
'necessito lcase (texto)
Dim I As Integer, J As Integer 'contadores pra percorer a matriz
Dim V(21, 1) As String * 1 'matriz de acentos e suas respectivas equivalentes
Dim A(38) As String 'vetor de caracteres invalidos
Dim TEMP As String, TMP As String 'vars temp que guardam os valores
Dim K As Integer 'contador pra percorrer a tmp
Dim TAM As Integer 'tamanho do texto
Dim TMPFINAL As String 'texto montagem, volta do procedimento
Dim CONT As Integer 'contador do vetor A


TEMP = LCase(Texto)
TAM = Len(TEMP)
TMPFINAL = vbNullString

V(0, 0) = "ã"
V(0, 1) = "a"
V(1, 0) = "á"
V(1, 1) = "a"
V(2, 0) = "à "
V(2, 1) = "a"
V(3, 0) = "à¢"
V(3, 1) = "a"
V(4, 0) = "à¤"
V(4, 1) = "a"

V(5, 0) = "é"
V(5, 1) = "e"
V(6, 0) = "à¨"
V(6, 1) = "e"
V(7, 0) = "ê"
V(7, 1) = "e"
V(8, 0) = "à«"
V(8, 1) = "e"

V(9, 0) = "í"
V(9, 1) = "i"
V(10, 0) = "à¬"
V(10, 1) = "i"
V(11, 0) = "à¯"
V(11, 1) = "i"
V(12, 0) = "à®"
V(12, 1) = "i"

V(13, 0) = "ú"
V(13, 1) = "u"
V(14, 0) = "à¹"
V(14, 1) = "u"
V(15, 0) = "à¼"
V(15, 1) = "u"
V(16, 0) = "à»"
V(16, 1) = "u"

V(17, 0) = "õ"
V(17, 1) = "o"
V(18, 0) = "ó"
V(18, 1) = "o"
V(19, 0) = "à²"
V(19, 1) = "o"
V(20, 0) = "à'"
V(20, 1) = "o"
V(21, 0) = "à¶"
V(21, 1) = "o"


A(0) = "'"
A(1) = "!"
A(2) = "@"
A(3) = "#"
A(4) = "$"
A(5) = "%"
A(6) = "&"
A(7) = "*"
A(8) = "("
A(9) = ")"
A(10) = "-"
A(11) = "_"
A(12) = "="
A(13) = "+"
A(14) = "§"
A(15) = "|"
A(16) = "\"
A(17) = ","
A(18) = "<"
A(19) = "."
A(20) = ">"
A(21) = ";"
A(22) = ":"
A(23) = "?"
A(24) = "/"
A(25) = "º"
A(26) = "-"
A(27) = "]"
A(28) = "}"
A(29) = "["
A(30) = "{"
A(31) = "¬"
A(32) = "¢"
A(33) = "£"
A(34) = "ÂÂÂ'"
A(35) = "'"
A(36) = "~"
A(37) = "^"
A(38) = "¨"

For I = 0 To (TAM - UM)
TMP = Mid(Left(TEMP, I + UM), I + UM, TAM)
For J = 0 To 21
For K = 0 To UM
If TMP = V(J, K) Then
TMP = V(J, UM)
End If
If TMP = "ç" Then '============================================
TMP = "c" ' Implementação de Stop Words caso ç --> c =
End If '============================================
For CONT = 0 To 38
If TMP = A(CONT) Then
TMP = " "
End If
Next
Next
Next
TMPFINAL = TMPFINAL & TMP
Next

TiraAcentos = TMPFINAL
Exit Function
Trata_erro:
MsgBox "Erro nº " & Err.Number & vbCrLf & "Erro:" & Err.Description
Err.Clear
Resume Next
End Function










THIAGO.CESAR 12/01/2005 16:37:01
#60315
Cara, eu já tinha uma função bem semelhante... é só colar no módulo

Public Function LimparTexto(Texto As String) As String
Dim CodAsc As Integer, PosicaoTxt As Long
Texto = Trim(Texto)
For PosicaoTxt = 1 To Len(Texto)
CodAsc = Asc(Mid(Texto, PosicaoTxt, 1))
Select Case CodAsc
Case 192 To 197
CodAsc = Asc("A")
Case 224 To 229
CodAsc = Asc("a")
Case 200 To 203
CodAsc = Asc("E")
Case 232 To 235
CodAsc = Asc("e")
Case 204 To 207
CodAsc = Asc("I")
Case 236 To 239
CodAsc = Asc("i")
Case 199
CodAsc = Asc("C")
Case 231
CodAsc = Asc("c")
Case 242 To 246
CodAsc = Asc("o")
Case 249 To 252
CodAsc = Asc("u")
Case 210 To 214
CodAsc = Asc("O")
Case 217 To 220
CodAsc = Asc("U")
End Select
LimparTexto = LimparTexto & Chr(CodAsc)
LimparTexto = Replace(LimparTexto, " ", " ")
Next
End Function

USUARIO.EXCLUIDOS 12/01/2005 16:38:58
#60317
Me respondam esse codigo tá feio ?
ANDRERP 12/01/2005 16:41:03
#60319
Não tá feio não, apenas o outro conseguiu fazer a mesma coisa com menos linhas de código. O meu está igual ao do THIAGO CESAR.
JB207 12/01/2005 18:01:22
#60363
Caro amigo....
Eu tenho muitos sistemas em COBOL para MS-DOS.
95% dos meus clientes reclamam por não poderem escrever com acentos.
Agora me diga, voce programando para Windows, será que é viavel tirar isso?
Abraços.
Ah....a não ser que voce vá imprimir em impressora matricial. dai sim.
Tópico encerrado , respostas não são mais permitidas