Imprimir página | Cerrar ventana

parte de una string por palabras

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84148
Fecha de impresión: 26/Mayo/2019 a las 21:38


Tema: parte de una string por palabras
Publicado por: cpampasPT
Asunto: parte de una string por palabras
Fecha de publicación: 06/Diciembre/2018 a las 21:46
Hola colegas,

A ver si me hechais una mano, que no consigo una solucion para esto :

mi variable obCommentText, recoje la totalidad del texto de un documento de word que tiene una serie de marcadores

la variable aPos (integer), recoje la posicion de un determinado marcador
la variable partStr, se posiciona en el texto de un determinado marcador, e recoje  los 30 caracteres anteriores, y los 30 caracteres siguientes

partStr =  Trim(Mid(obCommentText, aPos - 30, 60)


Lo que quiero es , en vez de los 30 anteriores y los 30 siguientes, es que partStr, recojiera, las 5 palabras anteriores ( desde que tengan mas de 2 caracteres cada una), y las 5 siguientes con la misma condicion de numero de caracteres >2

Alguien tiene una idea ?
Saludos



Respuestas:
Publicado por: mounir
Fecha de publicación: 06/Diciembre/2018 a las 23:29
Hola!

Yo he entendido que quieres extraer las primeras 5 letras empezando por el tercer carácter y los últimos 5 caracteres acabando en las ultimas 2 letras.

Si es eso es correct prueba esto:

= Mid(Left([Texto0],7),3,5) & Mid(Right([Texto0],7),1,5)

-------------
Un Saludo.


Publicado por: emiliove
Fecha de publicación: 07/Diciembre/2018 a las 00:07
Pues, la verdad dice las primeras 5 Palabras.

Y para obtener las palabras lo puede hacer con un Split algo como:

Dim LString As String
Dim LArray() As String
LString = "Esta es una prueba para extraer palabras de un parafo"
LArray = Split(LString)

MsgBox LArray(0) & " " & LArray(1) & " " & LArray(2) & " " & LArray(3)

Lo que nos mostraría: Esta es una prueba
Claro que tienes que trabajar la idea para en caso que tenga palabras de dos caracteres o de una letra que vaya agregando mas palabra.

Saludos.



Publicado por: cpampasPT
Fecha de publicación: 07/Diciembre/2018 a las 08:03
hola,
Si lo que pretendo es conseguir las palabras, pero en el sentido inverso o sea empezando por
"parafo", "un", "de", "palabras",   o sea las 5 palabras anteriores al marcador que esta en una parte del texto

a lo mejor hay que hacer un loop del tipo

For x = UBound(LArray) To LBound(LArray) Step -1

Gracias Emiliove, me pusiste en camino,os lo cuento segun me vaya
Saludos


Publicado por: cpampasPT
Fecha de publicación: 08/Diciembre/2018 a las 12:31
hola
asi  funciono :

Dim LString As String
Dim LArray() As String

aPos = 64
LString = "Esta es una prueba para extraer palabras de un parafo de texto y @ quiero extraer 5 palabras anteriores y 5 posteriores al marcador"
LString = Left(LString, aPos)
LArray = Split(LString)
   For x = UBound(LArray) To LBound(LArray) Step -1
       If Len(LArray(x)) > 2 Then cuenta = cuenta + 1
       str1 = LArray(x) & " " & str1
       If cuenta > 5 Then Exit For
   Next
MsgBox ("string final  " & str1)

---------
Gracias por la ayuda
Podeis cerrar el hilo



Imprimir página | Cerrar ventana