[ zamisli inzinjer ja @ 06.02.2016. 22:52 ] @
Pozdrav narode!

Imam problem oko kopiranja opsega u txt prazan list, konkretno u mom slucaju opseg M5-M11000. Da ne bih svaki put prelazio peske taj opseg ima li mogucnost da se napise makro koji bi to automatski odradio. Nasao sam slicnu temu pod naslovom "Kopiranje podataka iz opsega u txt fajl kao niz" ali nisam uspeo taj makro da primenim na mom slucaju.

[ Ivek33 @ 06.02.2016. 23:16 ] @
Evo ti primjer u attachu
btw: ima dosta na netu pa pogledaj što ti odgovara
[ zamisli inzinjer ja @ 07.02.2016. 13:34 ] @
Hvala ti Ivek33 na brzom odgovoru, to je upravo ono sto sam i trazio cak sam malo i modifikovao makro i prilagodio ga da mi to sto je zadato iskopira u AutoCad-u.
E sada dali postopji nacin da se na ovom makrou zada kopiranje u aktivnom otvorenom crtezu AutoCad-a

Sub KOPIRANJE1()
Dim c As Range, r As Range
Dim output As String
For Each r In Range("M5:M11000").Rows
For Each c In r.Cells
output = output & "" & c.Value
Next c
output = output & vbNewLine
Next r
Open "C:\1.DXF" For Output As #1
Print #1, output

Close
End Sub

predpostavljam da u ovom crvenom delu treba nesto izmeniti ali mi ne ide za rukom, probao sam par varijanti ali nije to to
[ Ivek33 @ 08.02.2016. 17:45 ] @
Ne znam što pokušavaš. Ovaj VBA code sam imao u mom fajlu koji koristim ponekada, tako da ti tu ne mogu pomoći.
AutoCAD nisam otvorio od kada sam napravio web tutorijal za početnike u AutoCAD 2010.

Traži pojmove, npr.
- Excel to DWG
- Export Excel to AutoCAD
- Import from Excel to AutoCAD
- Export DWG to CSV format file
...

Ne znam konkretno što želiš učiniti, ako si vezan za AutoCAD a podatke imaš u Excelu mislim da je najbolje da se javiš u dijelu foruma za CAD/CAM. Ili sačekaj da ti se javi ovdje neki stručnjak za VBA.
U sjećanju mi stoji da za export/import može koristiti neki LISP (ako su koordinate u pitanju ili tablica podataka)?
pozdrav
[ zamisli inzinjer ja @ 10.02.2016. 20:59 ] @
Izvinjavam se na mom ako se moze reci opravdanom odsustvu. probao sam da pronadjem ono sto mi treba odnosno VBA kod koji odredjeni opseg iz excela kopira u aktivni ACad fajl.
Naime o cemu se radi, ako u ACad komandnoj liniji iskopiramo npr. -TEXT 4.75,9.75 1.5 45 1 on ovo prepoznaje kao text i ispisuje ga na odredjenoj koordinati. E sada snimio sam makro koji kopira taj opseg koji meni treba, odnosno kao da sam peske isao i selektovao opseg potom na Ctrl+c, sad bi trebalo da u makrou ubacim jos taj deo koda koji to automatski kopira kao sto sam gore naveo u aktivni ACad fajl

Code:
Sub kopy1()
'
' kopy1 Macro
' prvo kopiranje
'
' Keyboard Shortcut: Ctrl+h
'
    Range("M5:M11000").Select
    Selection.Copy
End Sub

[ inzenjerija @ 15.03.2017. 20:23 ] @
Posle dugo traganja za makro-om koji ce odredjeni opseg iz excel fajla iskopirati u aktivni fajl AutoCad-a ili da sam otvori novi fajl pa u njemu iskopirati opseg bezuspesno se vracam na istu temu.
U prikazenom excel fajlu u "G" koloni su vrednosti (opseg cici broj celija varira), koje treba iskopirati u comandnoj liniji (CTRL+V) u AutoCad-u.
Nasao sam neki kod koji od prilike treba da odradi ono sto meni treba, ali cim sam ga modifikovao u startu je nastao problem prilikom kontrole
originalni kod
Code:
Sub DrawPoints()
        
    'Declaring the necessary variables.
    Dim acadApp         As Object
    Dim acadDoc         As Object
    Dim acadCircle      As Object
    Dim LastRow         As Long
    Dim i               As Long
    Dim Point(0 To 2)   As Double
        
    'Activate the coordinates sheet and find the last row.
    With Sheets("Coordinates")
        .Activate
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With
        
    'Check if there are coordinates for at least one point.
    If LastRow < 2 Then
        MsgBox "There are no coordinates to draw a point!", vbCritical, "Point Coordinates Error"
        Exit Sub
    End If
    
    'Check if AutoCAD application is open.
    On Error Resume Next
    Set acadApp = GetObject(, "AutoCAD.Application")
    
    'If AutoCAD is not opened create a new instance and make it visible.
    If acadApp Is Nothing Then
        Set acadApp = CreateObject("AutoCAD.Application")
        acadApp.Visible = True
    End If
    
    'Check (again) if there is an AutoCAD object.
    If acadApp Is Nothing Then
        MsgBox "Sorry, it was impossible to start AutoCAD!", vbCritical, "AutoCAD Error"
        Exit Sub
    End If
    On Error GoTo 0
    
    'If there is no active drawing create a new one.
    On Error Resume Next
    Set acadDoc = acadApp.ActiveDocument
    If acadDoc Is Nothing Then
        Set acadDoc = acadApp.Documents.Add
    End If
    On Error GoTo 0

    'Check if the active space is paper space and change it to model space.
    If acadDoc.ActiveSpace = 0 Then '0 = acPaperSpace in early binding
        acadDoc.ActiveSpace = 1 '1 = acModelSpace in early binding
    End If
         
    'Loop through all the coordinates and draw the corresponding point(s).
    With Sheets("Coordinates")
    
        'Set the point type.
        acadDoc.SetVariable "PDMODE", .Range("E1").Value
        
        'Set the point size.
        acadDoc.SetVariable "PDSIZE", .Range("G1").Value
                    
        'Loop through all the coordinates.
        For i = 2 To LastRow
            
            'Set the point coordinates.
            Point(0) = .Range("A" & i).Value
            Point(1) = .Range("B" & i).Value
            Point(2) = .Range("C" & i).Value

            'Draw the point.
            acadDoc.ModelSpace.addpoint (Point)
            
        Next i
        
    End With
    
    'Zoom in to the drawing area.
    acadApp.ZoomExtents
    
    'Release the objects.
    Set acadCircle = Nothing
    Set acadDoc = Nothing
    Set acadApp = Nothing
    
    'Inform the user about the process.
    MsgBox "The point(s) was/were successfully drawn in AutoCAD!", vbInformation, "Finished"

End Sub


modifikovani kod
Code:
Sub KOPIRANJE()

        
    'Proglasavanje potrebne varijable.
    Dim acadApp         As Object
    Dim acadDoc         As Object
    Dim acadCircle      As Object
    Dim LastRow         As Long
    Dim i               As Long
    Dim Point(0 To 2)   As Double
    Dim Range           As Range
        
    'Aktivirajte koordinata list i pronadite zadnjem redu.
    With Sheets("Coordinates")
        .Activate
        LastRow = .Cells(.Rows.Count, "G").End(xlUp).Row
        
        Range("G7:(LastRow = .Cells(.Rows.Count, "G").End(xlUp).Row)".Select
        
        Selection.Copy
    End With
        
    'Provjerite da li postoje koordinate za barem jedne tacke.
    If LastRow < 2 Then
        MsgBox "There are no coordinates to draw a point!", vbCritical, "Point Coordinates Error"
        Exit Sub
    End If
    
    'Provjerite da li AutoCAD aplikacija otvorena.
    On Error Resume Next
    Set acadApp = GetObject(, "AutoCAD.Application")
    
    'Ako se ne otvara AutoCAD stvoriti novu instancu i dozvati.
    If acadApp Is Nothing Then
        Set acadApp = CreateObject("AutoCAD.Application")
        acadApp.Visible = True
    End If
    
    'Proveri (opet) ako postoji AutoCAD objekt.
    If acadApp Is Nothing Then
        MsgBox "Sorry, it was impossible to start AutoCAD!", vbCritical, "AutoCAD Error"
        Exit Sub
    End If
    On Error GoTo 0
    
    'Ukoliko ne postoji aktivno crtež stvoriti novu.
    On Error Resume Next
    Set acadDoc = acadApp.ActiveDocument
    If acadDoc Is Nothing Then
        Set acadDoc = acadApp.Documents.Add
    End If
    On Error GoTo 0

    'Provjerite da li je aktivan prostor je papir prostor i promijeniti ga u prostor modela.
    If acadDoc.ActiveSpace = 0 Then '0 = acPaperSpace in early binding
        acadDoc.ActiveSpace = 1 '1 = acModelSpace in early binding
        
    Selection.Paste
    End If
    
    'Priblizi podrucje na crtezu .
    acadApp.ZoomExtents
    
    'Oslobodite objekte.
    Set acadCircle = Nothing
    Set acadDoc = Nothing
    Set acadApp = Nothing
    
    'Obavijestiti korisnika o procesu.
    MsgBox "The point(s) was/were successfully drawn in AutoCAD!", vbInformation, "Finished"

End Sub


odmah posle pronalazenja zadnje celije iz ranga pocrveni deo koda koji treba da selektuje rang i kopira
U excel fajlu su snimljeni i originalni i modifikovani kod
Dali neko moze zna kako ovaj problem prevazici
[ Jpeca @ 16.03.2017. 08:52 ] @
Za početak ovaj kod koji si neveo ne može ni da se kompajlra - ima sintaksnu grešku
Code:
Range("G7:(LastRow = .Cells(.Rows.Count, "G").End(xlUp).Row)".Select


Ako si već u prethodnoj liniji našao broj poslednjeg red i upisao ga u LastRow - 208 da selektuješ oblast G7:G208 pišeš jednostavno

Code:
Range("G7:G" & LastRow).Select


Proverio sam u debugeru i LastRow ti vraća 330 - ćelije od 209 do 330 nisu ti prazne - ne znam da li tako treba?

Koliko vidim acadCircle nigde ne koristiš, pa ti ne treba ni u deklaraciji ni u release - mada nije greška, ali zbog lakšeg praćenja i održavanja ja bih izbacio

[Ovu poruku je menjao Jpeca dana 16.03.2017. u 10:16 GMT+1]
[ inzenjerija @ 19.03.2017. 08:50 ] @
Probao sam i ovu kombinaciju Jpeca ali opet pravi problem, bar meni. Onda sam dao da je rang fiksan Range("G7:G3000").Select, onda je odradio deo koda odnosno selektoao je zadati rang, OTVORIO AutoCad ali ne i kopiranje u AutoCad-u. Znam da u AutoCad-u na COMMAND: liniji kada idem preko tastature CTRL+V on odradi posao. Znaci problem je navesti ga da na COMMAND: liniji makro odradi komandu CTRL+V