String tags that are not the default length are considered UDTs. The driver is only capable of reading/writing primitive types (INT, DINT, etc.) with the exception of pre-defined UDTs (Timers, Counters, default strings). When reading a UDT by it's root element, a string of concatenated bytes in hex will be returned. Since the driver does not know the structure of UDTs, it is not possible to write to using it's root element.
To access these UDTs/custom length strings, it is necessary to access them by their primative elements, which is a DINT for the string length and an array of SINT for each character.
In your example of reading the custom string:
06000000526f6c616e6400000000000000000000
The breaks down to :
00000006 = string length as a DINT
52 6f 6c 61 6e 64 = *oland (array of SINT representing each character)
To write to this string, you can do something like this:
'* Write ABC to a custom string
Dim ByteValues() as string={"65",66","67"}
ClxDriver1.BeginWrite("MyString.LEN",ByteValues.length}
clxDriver1.BegineWrite("MyString.Data",ByteValues)