Visual Basic para Aplicaciones - Enlazar autocad con excel VBA

Life is soft - evento anual de software empresarial
 
Vista:

Enlazar autocad con excel VBA

Publicado por Luis Miguel Guavita Rojas (2 intervenciones) el 12/01/2017 19:15:58
Buenos días resulta que soy muy nuevo en VBA y tengo el siguiente error, he tratado de todo pero no he logrado solucionarlo. Abro un documento en excel que tiene tres columnas de datos con 4070 filas y las leo en un supuesto arreglo llamados POINTS(), uso un ciclo para hacer toda esa lectura pero siempre al final me arroja el error que hay algo mal con los subindices, no entiendo qué es y les pido su ayuda.

El error siempre lo arroja en la linea POINTS(Z), si la elimino, va hacia la linea POINTS(Y), y si la elimino va hacia la linea POINTS(X), así que no entiendo qué sucede. Adjunto el código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub ANTPOLYLINE()
 
    Dim archivo As String
    archivo = "C:\PuntosANTS.xlsm"
        If Dir(archivo) <> "" Then
            Excel.Application.Workbooks.Open archivo
            Excel.Application.Visible = True
        Else
            MsgBox "Este archivo no existe"
        End If
 
    Dim ptox, ptoy, ptoz As Double
    Dim points(1 To 4070) As Double
    Dim ant As AcadLWPolyline
    Dim i, j, k As Integer
    Dim row_num As Integer
 
    i = 1
    j = 2
    k = 3
 
    For row_num = 1 To 4070
 
        ptox = Excel.Cells(row_num, 1).Value
        ptoy = Excel.Cells(row_num, 2).Value
        ptoz = Excel.Cells(row_num, 3).Value
 
        points(i) = ptox
        points(j) = ptoy
        points(k) = ptoz
 
        i = i + 3
        j = j + 3
        k = k + 3
 
    Next row_num
 
    Set ant = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
 
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Enlazar autocad con excel VBA

Publicado por JuanC (565 intervenciones) el 13/01/2017 11:06:17
los índices i, j, k se van de rango
el array está declarado hasta 4070 y los índices incrementan de 3
podrías usar un sólo índice:

1
2
3
4
points(i) = ptox
points(i + 1) = ptoy
points(i + 2) = ptoz
i = i + 3

y declarar el vector 1 To 4070*3 (son 4070 puntos de 3 valores cada uno)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Rta

Publicado por Luis Miguel Guavita Rojas (2 intervenciones) el 13/01/2017 18:33:39
Muchas gracias amigo, me sirvió y aparte hice un par de correciones. Dejo el código para la consulta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Dim archivo As String
archivo = "C:\PuntosANTS.xlsm"
    If Dir(archivo) <> "" Then
        Excel.Application.Workbooks.Open archivo
        Excel.Application.Visible = False
    Else
        MsgBox "Este archivo no existe"
    End If
 
'First part
 
Dim ptox, ptoy, points(1 To 12006) As Double
Dim ant As AcadLWPolyline
Dim i, row_num As Integer
 
i = 1
 
For row_num = 1 To 4002
 
    ptox = Excel.Cells(row_num, 1).Value
    ptoy = Excel.Cells(row_num, 2).Value
    points(i) = ptox
    points(i + 1) = ptoy
    i = i + 2
 
Next row_num
 
Set ant = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar