VBA VAL forzando una coma (,) en lugar de un punto (.)
Básicamente, estoy escribiendo un pequeño programa VBA de AutoCAD que lee archivos CSV para ejecutar comandos.
Primero, pongo el CSV en una matriz de cadenas (ya que también contiene caracteres). Una posición de la matriz necesito usarlo como doble para el comando (ya que lo requiere).
Pensé que esto sería una simple VAL () ya que se supone que mantiene el punto decimal independientemente de mi región.
Cualquier comentario es muy apreciado.
El CSV en cuestión está abajo:
Texto, STD, Romans.shx, 2.032, Altura y estilo de texto principal
Texto, MD, Romans.shx, 3.048,
Texto, LG, Romans.shx, 4.064,
Texto, BOM TEXT, Romans.shx, 1.5875, Texto para la lista de materiales
Texto, BOLD, Bold.shx, 5.08, “Archivo SHX personalizado de FortisBC” (Negrita)
Texto, BOLDFILL, Boldfill.shx, 5.08, “Archivo SHX de FortisBC personalizado” (Negritas con relleno)
Texto, DIM, Romans.shx, 0, “Dim utilizado en Estilo de dimensiones” “Ingeniería”
Texto, NAMEPLATE, Romans.shx, 6.35, “Usar bigfont.shx”
davy.ai
Para leer el archivo csv y ejecutar los comandos, puede usar el siguiente código de VBA:
“`lang-vb
Private Sub CommandButton2_Click()
sfilename = “C:\Users\Patrick.Legault\OneDrive – Cima+\Projects\AutoCAD Styles\” & ComboBox1.Value & “.csv”
Dim sLineFromFile As String
Dim name As String
Dim font As String
Dim height As String
Dim vlineItems() As String
Open sfilename For Input As #1
Do Until EOF(1)
Line Input #1, sLineFromFile
vlineItems = Split(sLineFromFile, “,”)
Call add_textstyle(vlineItems)
Loop
Close #1
End Sub
Sub add_textstyle(vlineItems() As String)
”’Patrick Legault 2021-11-15
”’Esta rutina crea nuevos estilos de texto con su altura respectiva.
Dim textStyle As AcadTextStyle
Dim TextColl As AcadTextStyles
Dim newfontstyle As String
Dim fontpath As String
Dim h_long As Double
fontpath = “C:\Users\Patrick.Legault\OneDrive – Cima+\Projects\AutoCAD Styles\Fonts” ”’para cambiar
Set TextColl = ThisDrawing.TextStyles ”’obtener los estilos de texto de este dibujo
Set textStyle = TextColl.add(vlineItems(1)) ”’agregar el nuevo estilo de texto
textStyle.fontFile = fontpath & “\” & (vlineItems(2)) ”’agregar el nuevo estilo de fuente al estilo de texto
h_long = CDbl(Val(vlineItems(3))) ”’esto devuelve el valor con coma
textStyle.height = (h_long)
MsgBox h_long
End Sub
“`
Para asegurarse de que la función Val () devuelva el valor con un punto decimal independientemente de la región, puede usar la función CDbl () para convertir el valor a un doble. Esto asegurará que el punto decimal se mantenga independientemente de la región.