Excel Vs Autocad



  • Excel Vs Autocad
    di bcgeppo data: 29/05/2014 13:52:33

    Buongiorno forum, curiosando in un famoso forum su Autocad ho trovato un post che parlava di come si potesse disegnare dei rettangoli in Autocad pescandone le dimensioni da un foglio Excel, il codice Vba da eseguire su Autocad è questo che posto, io di Vba ne capisco ben poco ma credo che non sia molto differente da quello che voi guru suggerite per Excel, io ho provato ha postare sul forum Cad ma nessuno mi ha dato risposta, se qualcuno di questo forum fosse cosi gentile da provare a indicarmi le eventuali correzioni da fare per farlo funzionare lo ringrazio vivamente.
    Questa macro da inserire in Autocad dovrebbe chiedere la posizione del foglio Excel (dove ci sono in colonna A le larghezze dei rettangoli e in colonna B le altezze) aprirlo e disegnare tanti rettangoli quante sono le righe impegnate di dati.
    Spero di essermi spiegato
    Buona giornata
     
    Public Sub carica_dati_Rettangoli()
    PercorsoCompletoFileSelezionato = ""
    ApriFile2 (cartella)
    Dim LunghezzaPercorsoCompletoFileSelezionato As Integer
    LunghezzaPercorsoCompletoFileSelezionato = Len(PercorsoCompletoFileSelezionato)
    If LunghezzaPercorsoCompletoFileSelezionato = 0 Then Exit Sub
    Dim NumeroCarattere As Integer
    Dim Carattere As String
    For NumeroCarattere = 0 To LunghezzaPercorsoCompletoFileSelezionato - 1
        Carattere = Mid(PercorsoCompletoFileSelezionato, LunghezzaPercorsoCompletoFileSelezionato - NumeroCarattere, 1)
        If Carattere = "" Then
            nomefile = Right(PercorsoCompletoFileSelezionato, NumeroCarattere)
            Exit For
        End If
    Next NumeroCarattere
    On Error Resume Next
        
        Dim Excel2 As Object
        Dim excelSheet2 As Object
    
     ' Start Excel
        On Error Resume Next
       
        Set Excel2 = GetObject(, "Excel.Application")
        
        If Err <> 0 Then
            Err.Clear
            Set Excel2 = CreateObject("Excel.Application")
                
            If Err <> 0 Then
                MsgBox "Could not load Excel.", vbExclamation
                End
            End If
        End If
        
        On Error GoTo 0
        Excel2.Visible = True
        Excel2.Workbooks.Open (PercorsoCompletoFileSelezionato)
        Excel2.Sheets(1).Select
        Dim i As Integer
        Dim stringa As String
        
        i = 2
        
        Do Until Excel2.Sheets(1).Cells(i, 1).Value = ""
                ThisDrawing.Application.Documents.Add
                stringa = Excel2.Sheets(1).Cells(i, 1).Value & "," & Excel2.Sheets(1).Cells(i, 2).Value
                ThisDrawing.SendCommand ("_rectangle" & vbCr & "0,0" & vbCr & stringa & vbCr)
                ThisDrawing.SendCommand ("_zoom" & vbCr & "E" & vbCr)
                i = i + 1
        Loop
    End Sub
    
    
    Type ApriNomeFile
       lStructSize As Long
       hwndOwner As Long
       hInstance As Long
       lpstrFilter As String
       lpstrCustomFilter As String
       nMaxCustFilter As Long
       nFilterIndex As Long
       lpstrFile As String
       nMaxFile As Long
       lpstrFileTitle As String
       nMaxFileTitle As Long
       lpstrInitialDir As String
       lpstrTitle As String
       flags As Long
       nFileOffset As Integer
       nFileExtension As Integer
       lpstrDefExt As String
       lCustData As Long
       lpfnHook As Long
       lpTemplateName As String
    End Type
    Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As ApriNomeFile) As Long
    Public PercorsoCompletoFileSelezionato As String
    
    
    Public Sub ApriFile2(PercorsoPredefinito As String)
    'Cartella fissa il percorso predefinito per la finestra di dialogo
    PercorsoPredefinito = "c:"
    Dim FinestraApri As ApriNomeFile
    Dim VariabileDiControllo As Long
    With FinestraApri
       .lStructSize = Len(FinestraApri)
       .lpstrFilter = "Dati Rettangoli" & vbNullChar & "*.*"
       .nFilterIndex = 2
       .lpstrDefExt = ""
       .flags = cdlOFNFileMustExist Or cdlOFNPathMustExist
       .lpstrTitle = "Seleziona percorso"
       .nMaxFile = 356
       .lpstrFile = Space$(255)
       .lpstrInitialDir = PercorsoPredefinito
    End With
    VariabileDiControllo = GetOpenFileName(FinestraApri)
    
    If VariabileDiControllo <> 0 Then
        PercorsoCompletoFileSelezionato = Left(FinestraApri.lpstrFile, InStr(FinestraApri.lpstrFile, vbNullChar) - 1)
    End If
    
    End Sub



  • di lepat (utente non iscritto) data: 29/05/2014 16:25:54

    dai un'occhiata a
    www.cad3d.it/forum1/showthread.php/32123-Vincolare-un-disegno-di-AutoCAD-ai-dati-di-Excel



  • di bcgeppo data: 29/05/2014 17:24:51

    Intanto grazie Lepat, ho letto il post e qualcosa sono riuscito a fare attraverso l'esecuzione di uno script opportunamente compilato con un foglio Excel e già questo è buono, ma per la macro da eseguire in Autocad che va a leggere la tabella Excel mi riporta esattamente al post dove ho trovato il codice che ho postato io e che non riesco a far funzionare perciò sono ritornato esattamente al punto di partenza.
    di nuovo grazie ciao