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

 

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

Έλεγχος ενεργειών εφαρμογών Office μέσω Visual Basic

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

    Έλεγχος ενεργειών εφαρμογών Office μέσω Visual Basic

    Καλησπέρα σας! Το θεματάκι ξεκίνησε σε ένα άλλο section (αυτό της Visual C++) αλλά ήδη από την πρώτη απάντηση που πήρα, άλλαξα οπτική επάνω στο θέμα και πλέον ψάχνομαι μέσω Visual Basic στο Visual Studio 2008. Για να πάρετε μια ιδέα, το αρχικό μου post είναι http://www.dotnetzone.gr/cs/forums/56873/ShowThread.aspx#56873.

    Για να μη σας κουράζω, θα προσπαθήσω να είμαι σύντομος και περιεκτικός στη διατύπωσή μου. Ο βασικός στόχος της εφαρμογής που προσπαθώ να αναπτύξω, είναι ο έλεγχος σε διάφορες ενέργειες του χρήστη κι όχι η πραγματοποίηση ενεργειών μέσω Visual Basic. Πιο συγκεκριμένα ακόμη, να αναφέρω παράδειγμα.

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

    Οι εντολές μέσω VB για τη δημιουργία νέου εγγράφου κι εισαγωγή στηλοθέτη όπως το θέλουμε, είναι:

    Dim docApp As Word.Application

    docApp = CreateObject("Word.Application")
    docApp.Visible = true

    docApp.Documents.Add()
    docApp.Selection.ParagraphFormat.TabStops.Add(Position:=docApp.CentimetersToPoints(5.5),Aligment:="wdAlignTableRight",Leader:="wdTableLeaderSpaces"

    Ο παραπάνω κώδικας είναι για τη δημιουργία όλων των παραπάνω. Το θέμα μου είναι, αν αυτά δημιουργηθούν πως θα μπορέσουμε να ελέγξουμε αν όντως έχουν γίνει έτσι ;

    Ευχαριστώ,
    Περικλής
    Δημοσίευση στην κατηγορία: , ,
  •  01-02-2010, 20:27 56878 σε απάντηση της 56875

    Απ: Έλεγχος ενεργειών εφαρμογών Office μέσω Visual Basic


    Περικλή,

    αυτή η version της VB, είναι πιο γνωστή σαν VBA (Visual Basic for Applications). Εκτός από VB, θα πρέπει να μάθεις καλά το λεγόμενο Word Object Model.

    Υπάρχει μια ιεραρχία Objects-classes π.χ Application και Document. απλά πρέπει να δεις πως αυτά συνδέονται. το περιβάλλον VBA editor έχει και help και Intellisense που σε βοθηάει να δεις την ιεραρχία.

    ένας καλός τρόπος για να μάθεις γρήγορα τα βασικά Objects είναι ο εξής.

    Μπορείς να χρησιμοποιήσεις τον "macro recorder" και να κάνεις κάποια tasks στο word και μετά να κάνεις stop macro recording και πατώντας Alt+F11 να δεις τι VBA κώδικα (έφτυσε) ο Macro recorder.

    βασικά εσύ θέλεις κάτι πολύ παραπλήσιο δεν θέλεις το "action" αλλά το αποτέλεσμα του action.

    κινείσαι όμως με τα ίδια βήματα.

    Παράδειγμα. π.χ "Ανοίξτε το αρχείο με όνομα διακοπές.doc και κάντε Βold-underline και color:red την πέμπτη λέξη."

    1) Δημιούργησε ένα αρχείο word
    2) Ονόμασε το "διακοπές.doc"
    3) Αποθήκευσε το στην επιφάνεια εργασίας.
    4) Μέσα στο έγγραφο αυτό γράψε το εξής "Μου αρέσουνε πολύ οι διακοπές."
    5) Κάνε την λέξη διακοπές (Bold,underline,red)
    6) Εσύ θέλεις να βρεις ότι όντως κάποιος το έκανε σωστά αυτό ή όχι.......
    7) Πήγαινε σε περιβάλλον, VBA (alt+f11) από το διακοπές.doc
    8) Κάνε insert ένα module και βάλε εκεί μέσα τον εξής κώδικα. Τρέξε τον κώδικα βήμα βήμα (F8)

    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
     
    Sub checkifwordformat()
    
    
    Dim application As Word.application
    
    
    Dim myworddoc As Document
    
    Dim myrange As Range
    
    Set myworddoc = GetObject("C:\Users\fofo\Desktop\äéáêïðÝò.doc")
    
    Set myrange = myworddoc.Words(5)
    
    If (myrange.Underline) <> 1 Or (myrange.bold) <> -1 Or (myrange.Font.Color) <> 255 Then
    
    MsgBox "FAIL"
    
    Else
    
    MsgBox "SUCCESS"
    
    
    End If
    
    
    End Sub

    δεν κάνω κάτι φοβερό, απλά ελέγχω να δω τι έχει γίνει από τις μορφοποιήσεις και αντίστοιχα πράττω. εσύ απλά στο If, else if θα βάλεις τις ενέργειες που πρέπει να γίνουνε σύμφωνα με τα requirements. εγώ απλά έβαλα κάποια message boxes

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




    Νικόλαος Καντζέλης
    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
  •  02-02-2010, 14:25 56911 σε απάντηση της 56878

    Απ: Έλεγχος ενεργειών εφαρμογών Office μέσω Visual Basic

    Να είσαι καλά Νικόλα, ήσουν σαφής και κατατοπιστικός. Μπήκα σε ένα δρόμο και το ψάχνω. Αν έχω απορίες, θα απευθυνθώ εδώ, στους ειδικούς Wink
  •  02-02-2010, 14:34 56912 σε απάντηση της 56911

    Απ: Έλεγχος ενεργειών εφαρμογών Office μέσω Visual Basic

    κανένα πρόβλημα,

    για αυτό είμαστε εδώ. για να βοηθάμε.

    θεωρώ να ασχοληθείς με το office object model και πιο ειδικά με το word object model, πρέπει να βρεις ένα καλό βιβλίο (στα αγγλικά).Προτείνω αυτό εδώ

    αν θέλεις για όλο το Office, πρέπει να βρεις ένα Office VBA book.

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

    Ξέρεις πως βρήκα γρήγορα ότι π.χ το color=red είναι 255 και γενικά όλα τα properties του word object model?

    Π.χ θες τους στηλοθέτες... κάνε ένα macro και κατέγραψε πως κάνεις στηλοθέτες. μετά δες τον Vb κώδικα που σου έφτιαξε το macro. είσαι κατά 80% έτοιμος 


    Νικόλαος Καντζέλης
    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
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems