Se puede ejecutar la función REEMPLAZAR (CRTL-L) desde una macro? Como la puedo automatizar?

Recurro a tus grandes conocimientos otra vez para ver si me puedes ayudar. (Ya colgué la pregunta en el general pero no recibí ninguna respuesta)
Tengo una bd con números de teléfono que no para de crecer, como algunos salen de las facturas de la compañía (con tablas vinculadas al access), a veces me sale el mismo numero con o sin el 34 delante (p. Ex. 34607000000), lo que pasa es que para hacer búsquedas de coincidencias necesito quitar todos los 34 de delante de los números.
Hay numeros internacionales, por lo que no todos tienen la misma longitud.. Hasta el momento le hago una consulta sencilla y con el CRTL-L abro el cuadro reemplazar y marcando EN PRINCIPIO DEL CAMPO el 34 y lo reemplazo por "nada" me va cambiando los valores cuando introduzco de nuevos.
Estaba pensando en una macro que me abriera la consulta, me seleccionara los números y ejecutara la función (¿o código?) De REEMPLAZAR y lo hiciera un poco mas automático..
No se, ¿estoy pidiendo una cosa muy difícil? Tenerlo automatizado me permitiría ahorrarme un paso importante, pero si no hay solución puedo continuar como hasta ahora.
Perdona por el tostón... Te mando un saludo y un abrazo!

1 Respuesta

Respuesta
1
Necesitaría saber lo siguiente:
- El nombre de la tabla (no la consulta, sino la tabla directamente) donde están esos teléfonos
- El nombre del campo que recoge el número de teléfono
- El tipo de campo del teléfono (número o texto)
Hola,
la tabla se llama HOJA1,
el campo se llama NUMERO
y el tipo de campo es de texto.
P.D. :
también lo quiero hacer servir la misma función para otra base que tengo que reemplazar una parte del principio de un campo de texto, supongo que podre cambiar el numbre de la tabla y el nombre del campo,  ¿no?.
muchas gracias!
Disculpa la tardanza, pero ayer me tuve que meter en cama porque llevo un "trancazo" impresionante.
Como siempre, como vamos a modificar registros, te recomiendo que hagas antes la prueba en una copia de tu BD, por si las moscas.
Bueno... Vamos allá. El código que te hace lo que pides, y que puedes asignar a cualquier botón de formulario, es el siguiente:
...
Private Sub Comando0_Click()
Dim vNum As String, vInicio As String
Dim largoNum As Integer
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Hoja1")
rst.MoveFirst
Do Until rst.EOF
vNum = rst.Fields("NUMERO").Value
vInicio = Left(vNum, 2)
If vInicio = "34" Then
largoNum = Len(vNum)
vNum = Right(vNum, largoNum - 2)
With rst
.Edit
.Fields("NUMERO").Value = vNum
.Update
End With
End If
rst.MoveNext
Loop
MsgBox "Reemplazo realizado correctamente", vbInformation, "OK"
End Sub
...
Respecto a tu segunda parte de consulta, el código te puede servir si el campo tiene las mismas características que tu campo [NUMERO], pero ten en cuenta que:
- El código que te paso detecta que el número empieza por 34 a través de
If vInicio = "34" Then
Lógicamente, si quieres detectar otro valor deberás cambiar el "34" por el valor a detectar.
- El código te reescribe el número que tenías "menos 2", porque 34 son dos caracteres. Esto lo hace a través de las líneas:
vInicio = Left(vNum, 2)
y
vNum = Right(vNum, largoNum - 2)
Si, por ejemplo, el valor a detectar hubiera sido "341" en estas línea deberíamos haber capturado y restado 3, quedando así:
vInicio = Left(vNum, 3)
y
vNum = Right(vNum, largoNum - 3)
¿Lo pillas? ;)
Pues eso, ya me dirás qué tal te ha ido.
¿Te ha llegado la notificación de que ya te había respondido?
Bueno, ya dirás...
Muchas gracias Neckitto! siento no haber contestado antes, hasta esta noche no he podido probar el código, no tenia dudas, va genial!!!
otra vez me ayudas muchíssimo, ya no se cuantas os debo!!
gracias!!
MArcux

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas