Μετάβαση στο περιεχόμενο
Newsletter: Ημερήσια τεχνική ενημέρωση από το Michanikos.gr ×

Excel - Για όσους θέλουν να ψάξουν παραπέρα ...


gvarth

Recommended Posts

Να 'σαι καλά terry! Χαίρομαι που σ' άρεσε! :)

 

Όσο για το άλλο ερώτημα που έθεσες, μπορείς να εκμεταλευτείς το συμβάν AcadDocument_ObjectModified όπως φαίνεται στο παρακάτω απλοϊκό παράδειγμα:

 

>Option Explicit

Private XLBook As Object

Private Sub AcadDocument_Activate()
   On Error Resume Next
   Set XLBook = GetObject("C:\Test.xls")
   Debug.Print "Open " & XLBook.Name
End Sub

Private Sub AcadDocument_BeginClose()
   On Error Resume Next
   Debug.Print "Close " & XLBook.Name
   XLBook.Close True
   Set XLBook = Nothing
End Sub

Private Sub AcadDocument_ObjectModified(ByVal Object As Object)
   If TypeName(Object) Like "*Polyline" Then
       XLBook.sheets(1).range("b2:g2") = Object.Coordinates
   End If
End Sub

 

Ελπίζω να σε βοηθάω.

  • Upvote 1
Link to comment
Share on other sites

John_John αυτη η λυση με την μορφοποιηση ειναι φοβερη για το εμβαδο

 

τωρα στο δευτερο θεμα του terry δεν το καταλαβα

χρησιμοποιω VBA και το βαζω μεσα??

τι κανω δωσε αν θες μερικες λεπτομερειες ακομα

Link to comment
Share on other sites

Καλησπέρα st2!

 

Πρώτα απ' όλα, δημιούργησε το αρχείο "C:\Test.xls" και αν θέλεις άνοιξέ το.

Σε ένα νέο σχέδιο στο Autocad, πάτα Alt+F11 να ανοίξει το περιβάλλον του VBE

και διπλοπάτησε στο αντικείμενο ThisDrawing.

Στο παράθυρο κώδικα που θα ανοίξει επικόλλησε τον κώδικα που έδωσα παραπάνω αλλά

αντικατέστησε τη διαδικασία "Private Sub AcadDocument_ObjectModified" με την παρακάτω:

 

>Private Sub AcadDocument_ObjectModified(ByVal Object As Object)
   If TypeName(Object) Like "*Polyline" Then
       If XLBook Is Nothing Then AcadDocument_Activate
       If Not XLBook Is Nothing Then
           XLBook.sheets(1).range("b2:g2") = Object.Coordinates
       End If
   End If
End Sub

 

Στη συνέχεια σχεδίασε μια polyline και δες τα αποτελέσματα στο "Test.xls".

Αν δεν είναι ανοιχτό το "Test.xls", πριν το ανοίξεις κλείσε το σχέδιο από το Autocad διότι είναι ανοιχτό στο παρασκήνιο.

 

Πιθανόν το παράθυρο του "Test.xls" να είναι κρυμμένο όταν το ανοίξεις

οπότε επανεμφάνισέ το από το αντίστοιχο μενού (Παράθυρο-->Επανεμφάνιση ή Window-->Unhide)

 

Μην ξεχνάς πως είναι απλά ένα παράδειγμα κώδικα χωρίς ιδιαίτερη μέριμνα για σφάλματα.:|

 

Ελπίζω να πάνε όλα καλά...:smile:

Γιάννης

  • Upvote 2
Link to comment
Share on other sites

Πάντως όταν απλά θέλω να βάλω 100,00 μ², χρησιμοποιώ την αυτόματη μορφοποίηση και μετά αλλάζω το € σε μ²

Αν θέλω να γράφει και μπροστά "Ε=" θα το κάνω όπως λέει ο John_John

Link to comment
Share on other sites

Γεια σε ολους

αυτο που θα βοηθουσε παρα πολυ θα ηταν μια εντολη που θα εκανε την πραξη ενος κελιου που θα ειχε περιπου αυτη την μορφη

5,50μ (υψος)*3,20μ (πλατος) *2,85μ (μηκος) =

δηλαδη μια εντολη που να αναγνωριζει μονο τους αριθμους (με κομμα και οχι με τελεια οπου δουλευει η EvalMath) και τα τα συμβολα των πραξεων και οχι τα γραμματα

και στο διπλανο κελι θα εβγαζε 50,16

 

ΑΠο κόμμα σε τελεία μπορείς να αλλάξεις με VB αλλά καλύτερα κάντο απο το control panel των windows.

 

Όσο για το άλλο που λές φυσικά και γίνεται να αναγνωρίζει μόνο τους αριθμούς, και είναι αρκετά απλό, δεν το έχω μπροστά μου αυτή τη στιγμή να στο γράψω.

 

Εξάλου ο κώδικας που σου δίνω είναι γενικός ώστε να προσθέσεις εσύ ότι θές

Link to comment
Share on other sites

αυτο που θα βοηθουσε παρα πολυ θα ηταν μια εντολη που θα εκανε την πραξη ενος κελιου που θα ειχε περιπου αυτη την μορφη

5,50μ (υψος)*3,20μ (πλατος) *2,85μ (μηκος) =

δηλαδη μια εντολη που να αναγνωριζει μονο τους αριθμους (με κομμα και οχι με τελεια οπου δουλευει η EvalMath) και τα τα συμβολα των πραξεων και οχι τα γραμματα

και στο διπλανο κελι θα εβγαζε 50,16

 

Ωραία η ιδέα σου !

Θα ξεκινήσω κάτι και μετά θα το "ανεβάσω" για σχολιασμό.

 

--- UPDATE ---

 

Δείτε το συνημμένο evalmath.zip , αποσυμπιέστε το και ανοίξτε το στο Excel αποδεχόμενοι την ενεργοποίηση των μακροεντολών.

 

Πλέον υπολογίζονται μαθηματικές εκφράσεις του τύπου :

 

3.40 μήκος χ 0.30 πλάτος χ 0.60 ύψος . Και δεν χρειάζεται να μπαίνει "=" πριν ή μετά

 

Ούτε μας απασχολεί πλέον η χρήση του '. ή του ',΄σαν σύμβολο δεκαδικών.

 

Η συνάρτηση είναι η evalmath και στο κελλί που θέλουμε το αποτέλεσμα γράφουμε :

 

=evalmath(input cell)

 

Όπου input cell είναι το κελλί όπου έχουμε γράψει την μαθηματική έκφραση που θέλουμε να υπολογίσουμε.

 

Να σημειώσω ότι το κείμενο ΔΕΝ μπορεί να τοποθετείται μέσα σε παρενθέσεις διότι με παρανθέσεις ορίζεται η προτεραιότητα των πράξεων. Αντί των συμβόλων "(" και ")" μπορεί να τοποθετηθούν "{" και "}" ή "[" και "]"

 

Προτάσεις για βελτίωση , ευπρόσδεκτες αν και ο κώδικας είναι ανοικτός στους γνωρίζοντες για επέμβαση.

EvalMath.zip

  • Upvote 1
Link to comment
Share on other sites

Μπράβο gvarth πολλή καλή εύχρηστη ρουτίνα την έψαχνα για καιρό.

Επειδή όμως είμαι κολημένος με το ανοιχτό λογισμικό υπάρχει κάποια αντίστοιχη για το OpenOffice

 

Ευχαριστώ,

Βασίλης

Link to comment
Share on other sites

Βασίλη καλησπέρα.

 

Δυστυχώς ΔΕΝ γνωρίζω την γλώσσα μακροπρογραμματισμού που αφορά στο Calc του OpenOffice. Ίσως σε κάποιο forum για το συγκεκριμένο περιβάλλον να βρείς περισσότερες πληροφορίες.

 

Επίσης , ρίξε μια ματιά και εδώ.

Link to comment
Share on other sites

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε προκειμένου να αφήσετε κάποιο σχόλιο

Πρέπει να είστε μέλος για να μπορέσετε να αφήσετε κάποιο σχόλιο

Δημιουργία λογαριασμού

Κάντε μια δωρεάν εγγραφή στην κοινότητά μας. Είναι εύκολο!

Εγγραφή νέου λογαριασμού

Σύνδεση

Εάν έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
×
×
  • Create New...

Σημαντικό

Χρησιμοποιούμε cookies για να βελτιώνουμε το περιεχόμενο του website μας. Μπορείτε να τροποποιήσετε τις ρυθμίσεις των cookie, ή να δώσετε τη συγκατάθεσή σας για την χρήση τους.