Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Microsoft Word, VBCodeProvider και δυναμική αναφορά στην εφαρμογή...

Îåêßíçóå áðü ôï ìÝëïò Perarg. Τελευταία δημοσίευση από το μέλος Perarg στις 01-03-2010, 14:32. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  24-02-2010, 19:58 57322

    Microsoft Word, VBCodeProvider και δυναμική αναφορά στην εφαρμογή...

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

    Φτιάχνω μια εφαρμογή που χρησιμοποιώντας την (COM) Microsoft Word 11 βιβλιοθήκη φορτώνεται το Microsoft Word, δημιουργείται ένα έγγραφο document και ο χρήστης θα πρέπει να εκτελέσει κάποιες ενέργειες πάνω στο έγγραφο, όπου με τη σειρά της η εφαρμογή θα "ελέγξει" ότι όλα έγιναν ορθώς. Η εφαρμογή χωρίζεται σε δύο μέρη.
    Το πρώτο μέρος, αφορά τη δημιουργία του εγγράφου κι όλων των παραμέτρων αυτού. Δηλαδή τη μία φορά θα ανοίγει απλά η εφαρμογή Word, την άλλη φορά θα ανοίγει μαζί κι ένα κενό έγγραφο, την άλλη ένα συγκεκριμένο αποθηκευμένο έγγραφο κ.ο.κ. Οι εντολές για να γίνει κάθε φορά το κάθε τι, μπαίνουν δυναμικά μέσω μιας βάσης που έχει αποθηκευμένες τις εντολές και εκτελούνται με τη χρήση VBCodeProvider (δημιουργώντας ένα assembly που με τη σειρά του εκτελείται).
    Το δεύτερο μέρος είναι κι αυτό δυναμικό. Κάθε φορά, ζητείται και κάτι διαφορετικό από πλευράς χρήστη. Οπότε σε κάθε περίπτωση ελέγχονται διαφορετικά πράγματα. Υπάρχουν κι αυτά μέσα στη βάση δεδομένων, όπου φορτώνονται σε ένα VBCodeProvider που είναι υπεύθυνο αυτή τη φορά να κάνει τον έλεγχο στις ενέργειες του χρήστη.

    Επειδή δε θέλω να σας μπερδεύω με λεπτομέρειες, να δώσω ένα παράδειγμα, άκρως απλοποιημένο. Η εφαρμογή ανοίγει και διαβάζει στη βάση δεδομένων τι πρέπει να εμφανίσει στο χρήστη. Η βάση περιέχει τις εντολές "Άνοιξε το Microsoft Word, εμφάνισε ένα κενό νέο έγγραφο". Ο χρήστης θα πρέπει να γράψει το όνομα του στο κενό έγγραφο και να πατήσει ένα κουμπί που ονομάζεται "Έλεγχος". Η εφαρμογή διαβάζει και πάλι τη βάση, όπου αυτή τη φορά αφορά τον έλεγχο των ενεργειών του χρήστη. Η βάση περιέχει τις εντολές, "Αν στο κενό έγγραφο του Word, έχουν πληκτρολογηθεί δύο λέξεις, εμφάνισε το μήνυμα "Συγχαρητήρια!" ".

    Και τώρα ακολουθεί η απορία! Έχω καταφέρει κι έχω κάνει τα δύο σκέλη όπως τα αναφέρω να δουλέψουν με επιτυχία, αλλά δε μπορώ να τα συνδέσω μεταξύ τους (και κατά μια έννοια, είναι λογικό!). Δηλαδή. Με το VBCodeProvider δημιουργείται ένα assembly με αρχή, μέση και τέλος κι εκεί τελειώνουν όλα. Δηλαδή, ανοίγω την εφαρμογή Word χρησιμοποιώντας μια μεταβλητή π.χ. myApp, δημιουργώ κι ένα έγγραφο με μια μεταβλητή π.χ. myDoc. Με το τέλος της εκτέλεσης του κώδικα assembly, προφανώς παύουν να υπάρχουν το myApp και το myDoc.
    Πηγαίνοντας στο δεύτερο σκέλος, αυτό του ελέγχου, προφανώς και πάλι, δεν υπάρχουν τα myApp και myDoc, οπότε αν κι έχω το έγγραφο ανοιχτό δεν μπορώ να αναφερθώ σε αυτό!

    Καμιά ιδέα βρε παιδιά ??

    Συγγνώμη αν κούρασα με τα πολλά λόγια, αλλά ήθελα να γίνω όσο κατανοητός γίνεται με την πρώτη!

    Δημοσίευση στην κατηγορία: ,
  •  24-02-2010, 23:15 57324 σε απάντηση της 57322

    Απ: Microsoft Word, VBCodeProvider και δυναμική αναφορά στην εφαρμογή...


    Φίλε μου,

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

    είχε φτιαχτεί σε delphi και το "τεστάρισμα" των ερωτήσεων με VBA.

    ήτανε μεγάλη εφαρμογή αλλά υλοποιήσαμε όλα αυτά τα οποία ψάχνεις να βρεις.

    για να καταλάβεις , πρώτα βαθμολογούσαμε, και μετά κλείναμε το έγγραφο.
    πηγαίνοντας κάποιος στην νέα ερώτηση, του ανοίγαμε πάλι το έγγραφο με την ερώτηση που ήθελε και τον χρόνο που απέμενε.

    όλα αυτά τα έκανα μέσω από delphi, και από εκεί κάναμε Instantiate το word, excel,access, powerpoint

    υπήρχανε ρουτίνες

    1) open a question
    2) close a question
    3) mark a question
    4) find the time elapsed
    5) reload the question

    δεν μπορώ να πω πιο πολλά εδώ, για ευνόητους λόγους....

    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  25-02-2010, 10:35 57328 σε απάντηση της 57324

    Απ: Microsoft Word, VBCodeProvider και δυναμική αναφορά στην εφαρμογή...

    Όντως λογικό είναι να μοιάζει αφού η εφαρμογή θέλω να υλοποιεί κάτι αντίστοιχο. Φυσικά όχι στα στενά πλαίσια της ECDL και χωρίς να έχω σκοπό να χρησιμοποιηθεί η εφαρμογή αυτή για επίσημες εξετάσεις σε κέντρα. Εξάλλου δουλεύω μόνος μου και ο σκοπός της εφαρμογής είναι περισσότερο προετοιμασίας υποψηφίων.
    Όντως αντιλαμβάνομαι ότι δε μπορείς να αναφέρεις περισσότερα εδώ Wink no worries! Η απορία μου σε γενικότερο πλαίσιο, αφορά αν θα μπορούσε μια ρουτίνα να αναφερθεί σε μια ανοιχτή εφαρμογή που έχει ήδη ανοίξει μια άλλη ρουτίνα. Φυσικά όπως είπα στο αρχικό μήνυμα, κάνω χρήση της εντολής VBCodeProvider όπου στην ουσία αντλώ εξωτερικά κώδικα και τον κάνω compile στο runtime. Εκεί είναι το "πρόβλημά" μου...

    nikolaosk δοκίμασα να σε προσθέσω στις επαφές του msn μου Wink
  •  25-02-2010, 17:09 57333 σε απάντηση της 57328

    Απ: Microsoft Word, VBCodeProvider και δυναμική αναφορά στην εφαρμογή...

    φιλε αν σε ενδιαφερει εχω ετοιμο τετοιο engine σε c# που ειχαμε κανει με ενα συνεργατη χρονια πριν για την ecdl και πουληθηκε και σε πολλα βιβλια,
    αλλα για προσωπικους λογους τραβηχτηκαμε απο το "παιχνιδι" και εχω τα δικαιώματα καθαρά εγω μονος μου.

    το engine που εχω ειναι 2 εφαρμογες client - server και στον ενα φτιάχνεις της ερωτησεις για ολες τις ενοτητες και πιστεψε με καλύπτει τα πάντα, και βγάζει αρχεία ερωτήσεων και το άλλο τα τρέχει! έτσι μπορεις να εχεις απο 1 εως άπειρες ερωτησεις σε καθε σου τερματικο.

    η τελική έκδοση με όλο το userinterface δεν μπορεί να δοθεί ούτε να πουληθεί για ευνόητους λόγους Wink, αλλά μια έκδοση πριν Που θα έλεγα οτι είναι BETA και θέλει εσύ να τελειώσεις τα userinterfaces μπορει να πουληθει! επισης η εφαρμογή συνδεεται σε server και κανει verification με cd-keys κατα την εγκατασταση.

    αν ενδιαφερεσαι σοβαρα να τελειωσεις κατι ετοιμο που θα κανει την δουλεια σου, και να το κρατήσεις δικο σου για πάντα (ή να το εκμεταλευτης) επικοινώνησε μαζι μου μεσω PM να σου πω λεπτομέρειες, όπως το κόστος κτλ.

    ευχαριστω

    This Business Is Binary. You are a 1 or a 0. Alive or Dead.-
  •  26-02-2010, 12:39 57339 σε απάντηση της 57322

    Απ: Microsoft Word, VBCodeProvider και δυναμική αναφορά στην εφαρμογή...

     έχω δουλέψει και εγώ στο παρελθόν με το Com Object και φυσικά όπως ο περισσότερος κόσμος χτύπαγα το κεφάλι μου.

    Θεωρώ ότι ιδανικά για την περίπτωση σου είναι τα  VSTO . Τσέκαρε λίγο τι παίζει. Έχεις ένα πολύ πιο efficient και object oriented τρόπο να κάνεις την δουλειά σου!!! Η ίδια η Microsoft τα προωθεί πολύ και μην ξεχνάς ότι με τις νέες εκδόσεις του Office θα γίνεται όλο και πιο δύσκολο να κάνουμε τις γνωστές ταρζανιές!!! Αν φτιάχνεις κάτι από την αρχή και δεν έχεις legacy code είναι ο ενδεικτικός τρόπος να προσεγγίσεις το πρόβλημα σου. 

    Κάποια στιγμή τα Office 2003 θα πεθάνουν και πολύς κώδικας θα πρέπει να αλλάξει!!! Tongue Tied



    Manos
  •  01-03-2010, 14:32 57383 σε απάντηση της 57339

    Απ: Microsoft Word, VBCodeProvider και δυναμική αναφορά στην εφαρμογή...

    Κατ' αρχήν ευχαριστώ πολύ για τις συμβουλές. Δε γνωρίζω άλλωστε για αυτό ρωτάω. Αυτές λοιπόν τις μέρες όντως ψάχνομαι λίγο γύρω από το θέμα του VSTO. Θα ήθελα να γράψω μια πρώτη εντύπωση και φυσικά όποιος έχει μεγαλύτερη πείρα πάνω σε αυτό τον τομέα, θα ήθελα να το σχολιάσει. Ξεκινώντας μια εφαρμογή VSTO, φορτώνεται ένα έγγραφο του Word (ας πάρω για παράδειγμα το Word). Κοιτώντας λίγο στα references, βλέπω ότι έχει φορτωμένες τις ίδιες βιβλιοθήκες (π.χ. Microsoft.Office.Interop.Word, Microsoft.Office.Tools.Word, κτλ.) που είχα προσθέσει κι εγώ manual στη δική μου εφαρμογή ξεκινώντας από το μηδέν. Δεύτερο πράγμα που παρατήρησα, μελετώντας διάφορα παραδείγματα στο net, είναι ότι χρησιμοποιούμε κι εδώ ακριβώς το ίδιο μοντέλο (π.χ. Dim myDoc As Word.Document) με τα ίδια αντικείμενα, κλάσεις και μεθόδους.

    Επειδή σκέφτομαι συνήθως συνολικά, προσπαθώ να δω λίγο παρακάτω. Βλέπω από τις επιλογές των Office Applications που σου δίνει το .ΝΕΤ υπάρχει το Word,Excel. Τα PowerPoint και το Outlook, εμφανίζονται μόνο ως Add-Ins κι όχι ως Document ή ως Workbook (ή Presentation που θα χρειαστώ στο Powerpoint). Επίσης υπάρχει πλήρης απουσία της Access (κι όλα αυτά για Windows 2007)

    Μήπως τελικά δε μου "ταιριάζουν" και τόσο τα VSTO ? Μήπως κάνουν τα ίδια πράγματα (για όσες τουλάχιστον εφαρμογές υποστηρίζουν), απλά βρίσκονται συγκεντρωμένα όλα σε ένα solution κι απλά γλιτώνεις χρόνο από τη manual προσθήκη ?

    Να είστε επιεικείς με την άγνοια ενός αρχαρίου σε Office Development... 
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems