Ricardo buen día.
Respecto a tus otras dos preguntas:
1.- Para no tener que agregar la linea extra que mencionas puedes estructurar el FOR de esta forma:
For i = 0 To rsDet.RecordCount - 1
vDoc.Lines.ItemCode = rsDet!Codigo
vDoc.Lines.ItemDescription = rsDet![Des]
vDoc.Lines.Quantity = rsDet!Cantidad
vDoc.Lines.Price = rsDet![Precio Und.]
vDoc.Lines.DiscountPercent = rsDet![% de dscto]
vDoc.Lines.Add
rsDet.MoveNext
Next i
inicias con el For i=0
y el vDoc.Lines.Add lo colocamos al final antes de movernos al siguiente registro.
A mí me ha funcionado bien de esa manera.Espero te sirva.
2.- Respecto lo de la variable string, me parece extraño ese error, no se exactamente que sea pero lo mejor es hacerlo como ya lo has indicado, usando como intermedio una variable string .
Me parece excelente que hayas logrado migrar la información que necesitabas desde DIAPI.
Para que a otros miembros de la comunidad les pueda ayudar este tema, favor de colocarlo como Resuelto, y marcar las respuestas que te ayudaron o resolvieron tu duda.
Fue un gusto apoyarte.
Saludos cordiales.
Saul.