Necesito convertir una cadena simple en una matriz de bytes usando excel VBA. Entonces esta matriz de bytes se usa como el cuerpo de la solicitud.¿Cómo convertir una cadena simple a Byte Array en VBA?
¿Cómo puedo hacer eso?
Gracias.
Necesito convertir una cadena simple en una matriz de bytes usando excel VBA. Entonces esta matriz de bytes se usa como el cuerpo de la solicitud.¿Cómo convertir una cadena simple a Byte Array en VBA?
¿Cómo puedo hacer eso?
Gracias.
Si solo necesita caracteres ANSI, puede usar la función StrConv() as is done here.
Mateo respondió cómo convertir a ANSI, pero si quería la matriz de bytes que resulta todavía representar la cadena Unicode original, que había simplemente asignar directamente:
Public Sub Main()
Dim b() As Byte
Dim s As String
s = "Whatever"
b = s 'Assign Unicode string to bytes.'
s = b 'Works in reverse, too!'
Debug.Print s
End Sub
Eso es todo lo que hay que hacer. Usted termina con una matriz de bytes de 16 elementos, cada par sucesivo que describe un carácter Unicode.
BTW para obtener sus comentarios resaltados correctamente en muestras de código VB, agregue otro apóstrofo 'al final de cada línea de código – MarkJ
¿Hay alguna guía para eso, en alguna parte? Encontré que ingresar el código es excesivamente tedioso. –
' a bit of an example
' had some strings down column G
' nothing in columns "F" or "H" so that current works
' Think about it.. there are many many columns
' so leave blank columns on each side of setsof dats
' then currentregion works ... IFF no blank rows in the data
'
' problem to solve some text was Fred3 John2 Blue3
' others were Bert 3 Green 2 ... which was the require format
' the ASC char 1 ..255 are the odd or even
' numbered bytes if array is 1 based or 0 based
'
Private Sub CommandButton1_Click()
Dim RV$, Ra As Range, Ri&, AL%, WSA() As Byte
Dim Ci%, WS$, LV As Byte
Set Ra = Range("g8").CurrentRegion
For Ri = 1 To Ra.Rows.Count
WSA = CStr(Ra(Ri, 1).value)
AL = UBound(WSA)
LV = WSA(AL - 1) ' last char byte value
If LV > 47 And LV < 58 Then ' 0 to 9
If WSA(AL - 3) <> 32 Then ' no space " "
ReDim Preserve WSA(AL + 2) ' allow 1 more char
WSA(AL - 3) = 32 ' put in space
WSA(AL - 1) = LV ' return char
WS = WSA ' back to a string
Ra(Ri, 1) = WS ' back to the cell
End If
End If
Next Ri
End Sub
' of course the normal VBAcommands Instr len Mid replace &
' would do the job ... but my brain is lazy and needed some exercise
Ambas respuestas funcionan bien pero esta requiere menos codificación y tiempo. – Ubalo