mira yo creo que ya más no puedo aportar. Para lo de crear líneas ya te propuse VbNewLine o vbCrLf y eso funciona.pero por alguna razón que desconozco no funciona dentro de tu código. Como no puedo reproducir tu código no hay forma de que pueda encontrar la razón.
Incluso he usado un código de VBScript y un For Each y dentro de este el Split. Para comprobar que funciona.
Para sacar el nombre lo del SPLIT que ya habrás comprobado que funciona,
Este código por ejemplo lista los procesos en formato "Aplicación.exe" y se trata de listarlo quitando ".exe".
Código
Dim strComputer As String strComputer = "." Dim objWMIService As Object Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Dim colProcessList As Object Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process") For Each objProcess In colProcessList Dim sN() As String sN = Split(objProcess.Name, ".") List1.AddItem (sN(0)) Next
funciona sin problemas
Ahora vamos con tu código. Es básicamente lo mismo pero no te funciona. Lo único que se me ocurre sin poder probarlo es quitar la condición y poner On error Resume Next.
Código
For Each obj In ou Dim sN() As String sN = Split(CStr(obj.managedby), ",") sN = Split(sN(0), "=") On Error Resume Next objConsulta_PING2.WriteLine (StrEquipo & TabStop & UCase(sN(1)) _ & " " & _ "Hace PING" & vbNewLine) Next
Podrías probar a usar puntos de interrupción para ver el valor de obj.managedby en tiempo de ejecución antes de escribir.
En la parte izquierda del editor, justo donde acaba lo blanco, hay una columna vacía tipo botón que si le das aparece un punto rojo.
objConsulta_PING2.WriteLine (StrEquipo & TabStop & obj.managedby _
& " " & _
"Hace PING" & vbNewLine)
mete obj.managedby en una variable String
Código
Dim g As String g = obj.managedby
y marca el el punto justo donde está Next
Inicia le código y cuando se interrumpa coloca el puntero justo encima de g, debería mostrarse un texto que muestra su valor justo en ese momento. A ver que formato tiene, para poder extraer el nombre.