ExcelのVBAを使用して、バイト配列の単純な文字列を変換する必要があります。次に、このバイト配列が要求の本体として使用されます。VBAで単純な文字列をバイト配列に変換する方法は?
どうすればいいですか?
ありがとうございました。
ExcelのVBAを使用して、バイト配列の単純な文字列を変換する必要があります。次に、このバイト配列が要求の本体として使用されます。VBAで単純な文字列をバイト配列に変換する方法は?
どうすればいいですか?
ありがとうございました。
ANSI文字だけが必要な場合は、StrConv()関数as is done hereを使用できます。
マシューはANSIに変換する方法を答えていますが、まだ元のUnicode文字列を表すために、結果のバイト配列を望んでいた場合、あなたは単にそれを直接割り当てると思います。これだけです
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
を。 16バイトのバイト配列で終わり、各連続したペアは1つのUnicode文字を記述します。
あなたのコメントをVBコードサンプルで適切に強調表示するには、各コード行の最後に別のアポストロフィを追加してください – MarkJ
ガイドはありますか?私は過度に退屈なコードを入力することを発見した。 –
' 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
両方の回答がうまくいきますが、これはコーディングと時間が少なくて済みます。 – Ubalo