Saltar al contenido

Doble comillas en cadena de texto


Recommended Posts

Estimados amigos buenos días,

Por favor, alguien me puede dar una mano la siguiente cuestión:

Tengo un xml que tiene el campo nodo llamado

<adicionales> </adicionales>

mismo que tiene campos nodo hijos 

<tagadicionales nombre"Apellido"> </tagadicionales>

<tagadicionales nombre"Nombre"> </tagadicionales>

<tagadicionales nombre"Numero"> </tagadicionales>

 

Mas o menos así:

<adicionales>
 	<tagadicionales nombre="Apellido">Turanga</tagadicionales> 
	<tagadicionales nombre="Nombre">Leyla</tagadicionales> 
	<tagadicionales nombre="Numero">1723495</tagadicionales> 
</adicionales> 

 

Entonces tengo el siguiente código que busca el tag y extrae el valor:

 

    If InStr(1, TextStringNumber2, "<tagadicionales nombre=""Apellido"">") > 0 Then
    ActiveCell.Offset(0, 30).Value = Mid(TextStringNumber2, InStr(num1, TextStringNumber2, "<tagadicionales nombre=""Apellido"">") + 34, InStr(num1, TextStringNumber2, "</tagadicionales>") - InStr(num1, TextStringNumber2, "<tagadicionales nombre=""Apellido"">") - 34)
    End If

 

Sin embargo no me arroja valor alguno cuando ejecuto la macro, sé que talvez en la línea "<tagadicionales nombre""Apellido"">" estoy teniendo un error pero no sé que estoy haciendo mal ya que cuando es un tag normal que no tiene comillas en el texto sí me recupera la información.

 

Alguien que por favor me pueda dar alguna guía o sugerencia. Muchas gracias de antemano.

 

 

 

Enlace a comentario
Compartir con otras webs

En 3/8/2019 at 11:05 , Luis Antonio Torres dijo:

Sin embargo no me arroja valor alguno cuando ejecuto la macro, sé que talvez en la línea "<tagadicionales nombre""Apellido"">" estoy teniendo un error pero no sé que estoy haciendo mal ya que cuando es un tag normal que no tiene comillas en el texto sí me recupera la información.

Alguien que por favor me pueda dar alguna guía o sugerencia. Muchas gracias de antemano.

Hola @Luis Antonio Torres

Tal cual estas usando la función instr es para hacer una búsqueda exacta (case sensitive, la cual toma en cuenta las mayúsculas y minúsculas), ya probaste agregando el parametro vbTextCompare? Quedaría de la siguiente forma:

If InStr(1, TextStringNumber2, "<tagadicionales nombre=""Apellido"">", , vbTextCompare) > 0 Then
  ActiveCell.Offset(0, 30).Value = Mid(TextStringNumber2, InStr(num1, TextStringNumber2, "<tagadicionales nombre=""Apellido"">") + 34, InStr(num1, TextStringNumber2, "</tagadicionales>") - InStr(num1, TextStringNumber2, "<tagadicionales nombre=""Apellido"">") - 34)
End If

Aun así estoy viendo que dentro de ese if hay otra comparación, creo que sera mas práctico que conviertas a minúsculas el contenido de la variable TextStringNumber2 con la función  LCASE.

Consejo si vas a procesar archivos XML quizás te convenga hacer uso de una librería especifica para ello en VBA/Excel o utilizar otro lenguaje de programación. 

Saludos!

Enlace a comentario
Compartir con otras webs

En 9/8/2019 at 18:52 , digitalboy dijo:

Hola @Luis Antonio Torres

Tal cual estas usando la función instr es para hacer una búsqueda exacta (case sensitive, la cual toma en cuenta las mayúsculas y minúsculas), ya probaste agregando el parametro vbTextCompare? Quedaría de la siguiente forma:


If InStr(1, TextStringNumber2, "<tagadicionales nombre=""Apellido"">", , vbTextCompare) > 0 Then
  ActiveCell.Offset(0, 30).Value = Mid(TextStringNumber2, InStr(num1, TextStringNumber2, "<tagadicionales nombre=""Apellido"">") + 34, InStr(num1, TextStringNumber2, "</tagadicionales>") - InStr(num1, TextStringNumber2, "<tagadicionales nombre=""Apellido"">") - 34)
End If

Aun así estoy viendo que dentro de ese if hay otra comparación, creo que sera mas práctico que conviertas a minúsculas el contenido de la variable TextStringNumber2 con la función  LCASE.

Consejo si vas a procesar archivos XML quizás te convenga hacer uso de una librería especifica para ello en VBA/Excel o utilizar otro lenguaje de programación. 

Saludos!

 

 

Hola @digitalboy muchas gracias por tu respuesta. Me ha servido muy bien, he utilizado vbtextcompare, y quedó tal cual lo venía buscando.

Con lo de las librerías no la tengo muy clara, sin embargo, muchas gracias por la guía ya mismo voy a "guglear". 

Muchas gracias por tu tiempo y ayuda. 

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.