Visual Basic - Separación de String

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Separación de String

Publicado por Jordi (6 intervenciones) el 26/04/2017 16:46:38
Hola,

Tengo una duda con un script que estoy manejando. Este script se encarga de hacer una query a nivel de SO para devolver los mount points que tiene el sistema.
El problema es, que estoy haciendo un for each en un objeto (donde está la respuesta de la query) y lo guardo en una variable.

Variables totales:
1
2
3
4
5
Public strMount, strUpe, strComp, strUser, strPass
Dim objWbemLocator
Dim wbemServices
Dim colItems
Dim objItem()

Línea de for each:
1
2
3
4
5
6
7
8
9
For Each objItem in colItems
		If Not (IsNull(objItem.Capacity) Or IsNull(objItem.FreeSpace)) Then
 
			'Se introduce en la variable la ruta y se calcula el porcentaje
			strMount = strmount & _
			Cstr(objItem.Name) & vbTab & CStr(Int((100*((objItem.Capacity) - (objItem.FreeSpace))/objItem.Capacity)))& _
			vbCrLf
		End If
	Next

Tengo una duda con esto. Al final, se imprime la variable "strMount", declarada al principio.
Lo que realmente me interesa de este script, es una parte de "objItem.Name de la query.
He intentado crear otra variable de tipo String de la siguiente forma:
1
Dim loQueQuiero AS String

y sacando los datos dentro del If del For each
1
2
loQueQuiero = loQueQuiero &_
				Cstr(objItem.Name)

Esto consigue que me imprima exactamente en una misma línea 'loQueQuiero'. En esa línea, solamente me interesa el nombre de usuario, la salida de ejemplo sería:
1
C:\Users\UPE0735\C:\Users\USP1725

A partir de aquí, ¿cómo puedo seleccionar solamente lo que pone UPEXXXX o USPXXXX y ponerlo en otra variable?
He intentado con Substring pero no hay manera, ¿hay alguna manera más eficaz?

Gracias, un saludo
Jordi
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Separación de String

Publicado por Andres Leonardo (1798 intervenciones) el 26/04/2017 19:03:20
Hola Claro tan facil como comerse un arroz con pollo

Creo que deberias crear una variable la cual te vaya sacando solo lo que quieres....

loQueQuiero = loQueQuiero &_
Cstr(objItem.Name)

si esto te concatena esto

C:\Users\UPE0735\C:\Users\USP1725

queire decir que fue asi

C:\Users\UPE0735\
C:\Users\USP1725\

siendo asi ... lo que importa es buscar lo qu eesta antes del penultimo \

Siendo asi podria sacar lo que necesitas

Llego a mi puesto y te respondo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Separación de String

Publicado por Andres Leonardo (1798 intervenciones) el 26/04/2017 20:49:43
este es un ehjemplo de lo que tienes.....

1
2
3
x = "C:\Users\UPE0735"   ' es lo que quieres la variable 
l = InStrRev(x, "\")   ' si quieres ser mas especifico podrias poner en vez de "\"  "c:\Users\"  pero deberias sumar la cantidad de caracteres que buscaste 
MsgBox Mid(x, l + 1, Len(x) - l)  ' aqui te muestra lo que necesitas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Separación de String

Publicado por Jordi (6 intervenciones) el 01/05/2017 10:01:20
Hola,

Gracias por tu respuesta.
Tengo dudas en cómo funciona el ejemplo que indicas.
Para las instrucciones InStrRev y MsBox Mid, qué datos contienen?
Es decir, como bien indicas, Cstr(objItem.Name) me concatena todo en una misma fila. Entonces debería quedar algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
For Each objItem in colItems
		If Not (IsNull(objItem.Capacity) Or IsNull(objItem.FreeSpace)) Then
 
 x = "C:\Users\UPE0735" ' Esta parte es la que no entiendo, necesito "UPEXXXX"
l = InStrRev(9, "\")   'Solamente quiero lo que indica como "UPEXXXX", por lo que selecciono 9 posiciones
llamoAlMetodoQueQuiero (MsgBox Mid(x, l + 1, Len(x) - l))  ' Entiendo que de esta forma, para cada loop llamará a ese método con ese String
 
			'Se introduce en la variable la ruta y se calcula el porcentaje
			strMount = strmount & _
			Cstr(objItem.Name) & vbTab & CStr(Int((100*((objItem.Capacity) - (objItem.FreeSpace))/objItem.Capacity)))& _
			vbCrLf
		End If
	Next

¿Sería correcto esto?

Gracias,
Jordi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Separación de String

Publicado por Andres Leonardo (1798 intervenciones) el 01/05/2017 17:02:26
Espero te guie.
Para las instrucciones


InStrRev este de aqui busca un caracter especifico dentro de un string pero lo busca de derecha a izquierda...........recibe la cadena de caracteres y el caracter a buscar y te devuelve un entero >0 si la encuentra

y MsBox lo que hace es presentar un mensaje en un formulario .... recibe un parametro de que mensaje mostrar y otros opcionales como el titulo y el icono a mostrar

Mid - extrae subcaneas de texto donde indicas un parametro inciio y numero de caracteres a extraer
ejemplo si el string es 123456789 y le digo x=(mid, 2,3) el resultado sera 234 devuelve un string de datos si es correcto.

lo que tu quieres es




1
2
3
4
x = "C:\Users\UPE0735"   ' es lo que quieres la variable 
l = InStrRev(x, "\")   ' si quieres ser mas especifico podrias poner en vez de "\"  "c:\Users\"  pero deberias sumar la cantidad de caracteres que buscaste 
loQueQuiero  = Mid(x, l + 1, Len(x) - l)
MsgBox loQueQuiero

Prueba ahora ....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Separación de String

Publicado por Jordi (6 intervenciones) el 04/05/2017 09:14:38
Hola,

Gracias por la ayuda, ha funcionado perfectamente.

Un saludo
Jordi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar