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

 

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

VB, OLE1.Class = "Excel.Sheet.8", OLE1.SourceItem = ? για περιοχή συγκεκριμένου Worksheet

Îåêßíçóå áðü ôï ìÝëïò g-skou. Τελευταία δημοσίευση από το μέλος nikolaosk στις 21-07-2009, 14:50. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  16-06-2009, 16:51 51735

    VB, OLE1.Class = "Excel.Sheet.8", OLE1.SourceItem = ? για περιοχή συγκεκριμένου Worksheet

    Γεια  σε όλους.
    Ελπίζω στην βοήθεια σας.

    Με τον παρακάτω κώδικα
     
    OLE1.Class = "Excel.Sheet.8"
    OLE1.SourceDoc = App.Path + "\t-TEST.xls"
    OLE1.OLETypeAllowed = 2
    OLE1.SourceItem = "R3C3:R10C10"

    εμφανίζω την περιοχή
    "R3C3:R10C10" αλλά όχι του φύλλου εργασίας "et_TAPI που θέλω εγώ.
    α. Πως πρέπει να γραφτεί ο κώδικας  αν εγώ θέλω  του αρχείου 
    t-TEST.xls  να δω  στο Worksheets  et_TAPI  την περιοχή  "R3C3:R10C10"  ;
    β. Η περιοχή "R3C3:R10C10" μπορεί να αποδοθεί, γραφτεί  διαφορετικά ; ( Με την χρήση  cells π.χ ( cell(3,3), cells(10,10))



    σας ευχαριστώ.

    Να είστε καλά
    Geo Skournetos
  •  16-06-2009, 19:00 51739 σε απάντηση της 51735

    Απ: VB, OLE1.Class = "Excel.Sheet.8", OLE1.SourceItem = ? για περιοχή συγκεκριμένου Worksheet


    φίλε μου,

    καλώς ήρθες στο forum.

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

    επίσης προσπάθησε να μας πεις τι πας να κάνεις.

    Θέλεις απλά να δουλέψεις με VBA μέσα από excel?

    θέλεις να δουλέψεις σε μια εφαρμογή με VB που πρέπει να ανοίγει-διαβάζει-σώζει excel aρχεία?

    Θες να "μιλήσεις" με Office applications μέσω Managed code?

    σε κάθε περίπτωση πρέπει να έχεις μια καλή γνώση του Excel Object Model?

    Γενικά υπάρχει μια ιεραρχία στο excel object model.

    έχεις το application που στην ουσία είναι το ίδιο το excel.

    το workbook,worksheet,range κ.τ.λ

    ρίξε μια ματιά εδώ

    http://msdn.microsoft.com/en-us/library/wss56bz7(VS.80).aspx

    Νικόλαος Καντζέλης
    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
  •  17-06-2009, 03:23 51742 σε απάντηση της 51739

    Απ: VB, OLE1.Class = "Excel.Sheet.8", OLE1.SourceItem = ? για περιοχή συγκεκριμένου Worksheet


    Κύριε Νίκο
    σ΄ευχαριστώ για την καλή σου διάθεση για βοήθεια αλλά και την απάντησή σου.

    Έχεις δίκιο για το τίτλο τού  θέματος.

    =>Το αίτημα μου έχει σχέση με το πως μέσα από  μια εφαρμογή με VB μπορούμε  να ανοίξουμε-διαβάσουμε-αποθηκεύσουμε  excel aρχεία?

    Ειδικότερα με ενδιαφέρει το εξής:

    Έχω δημιουργήσει εφαρμογή σε  VB 6  με την οποία  θέλω μέσα από ένα  ένα μενού  επιλογών να εμφανίζω  μία  ορθογώνια  περιοχή [κελιών] ενός συγκεκριμένου φύλλου ενός αρχείου Excel π.χ του t-TEST.xls

    Το αρχείο t-TEST.xls [έχει φύλλα τα et-TAPI, et-TEMI, et-TERGA και  TEPE, με την  σειρά που τα αναφέρω]

    Ο κώδικας που έχω προαναφέρει ' τρέχει ' αλλά εμφανίζει  πάντα  την  περιοχή  του πρώτου φύλλου στην προκειμένη περίπτωση του  et-TAPI !

    Αν μετακινήσω π.χ το τελευταίο φύλλο  TEPE και το θέσω  πρώτο τότε  θα εμφανίζεται  η περιοχή του ΤΕΡΕ.

    Δύο σκέψεις έχω κατά νου.
    1η  Πρέπει να γίνει   συμπλήρωση  ή  διόρθωση του κώδικα ώστε η ιδιότητα  OLE1.SourceItem να παραπέμπει στην περιοχή  του φύλλου που εμείς επιθυμούμε να εμφανιστεί ( και όχι του α' φύλου που πάντα εμφανίζει)
    2η  Αν δεν υπάρχει λύση σύμφωνα με την πρώτη  σκέψη τότε μήπως είναι (σε run time της εφαρμογής VB)  δυνατή η  μετακίνηση στην πρώτη θέση οποιουδήποτε φύλλου - του αρχείου t-TEST.xls -  επιλέξουμε ;

    Υ.Γ
    • Επισκέφτηκα τη διεύθυνση που μου υπέδειξες αλλά δεν μπόρεσα να βρω κάτι σχετικό.
    • Δεν έχω ιδιαίτερες γνώσεις στην πληροφορική (δηλ. δεν κατανοώ πλήρως όρους ή  έννοιες που αναφέρεις στην απάντησή σου)
    •  Οι γνώσεις μου είναι  από την μελέτη (βιβλίων) της Visual Basic οι οποίες με οδήγησαν στην  χρήση της   VBA  για αρχεία Εxcel             ( διευκόλυνση στη εργασία μου: Βαθμολογία Μαθητών, Μ.Ο κτλ  είμαι Μαθηματικός με 27 χρόνια στο δημόσιο σχολείο ] )                     
    Αυτά κι ελπίζω να να βρεθεί μια λύση στην δυσκολία που συναντώ.
    Ευχαριστώ και πάλι.
    Με εκτίμηση
    Γεωρ. Σκουρνέτος

  •  17-06-2009, 09:34 51745 σε απάντηση της 51742

    Απ: VB, OLE1.Class = "Excel.Sheet.8", OLE1.SourceItem = ? για περιοχή συγκεκριμένου Worksheet

    g-skou:
     Δεν έχω ιδιαίτερες γνώσεις στην πληροφορική (δηλ. δεν κατανοώ πλήρως όρους ή  έννοιες που αναφέρεις στην απάντησή σου)
    •  Οι γνώσεις μου είναι  από την μελέτη (βιβλίων) της Visual Basic οι οποίες με οδήγησαν στην  χρήση της   VBA  για αρχεία Εxcel             ( διευκόλυνση στη εργασία μου: Βαθμολογία Μαθητών, Μ.Ο κτλ  είμαι Μαθηματικός με 27 χρόνια στο δημόσιο σχολείο ] )  
    Άποψη μου είναι ότι πρέπει να ξεχάσετε την Vb6 και να χρησιμοποιήσετε Access για να κάνετε την δουλειά σας. Δηλαδή μέσα από την Access θα κάνετε link πίνακα σε συγκεκριμένες στήλες του συγκεκριμένου φύλλου του excel. Μετά η Access έχει πολλά καλούδια για να τα επεξεργαστείτε : queries, φόρμες, VBA 

    Η Vb6 είναι obselete και δεν νομίζω ότι χρειάζεται να επενδύσετε άλλο σε αυτή. Αν το θέλετε για προσωπική σας χρήση και διευκόλυνση νομίζω ότι είναι overkill να πάτε σε .net μια και η καμπύλη εκμάθησης είναι αρκετά μεγάλη. Πάρτε ένα βιβλίο για Access και επενδύστε εκεί. Θα σας λύσει τα χέρια.

    Manos
  •  20-07-2009, 17:52 52635 σε απάντηση της 51745

    Απ: VB, OLE1.Class = "Excel.Sheet.8", OLE1.SourceItem = ? για περιοχή συγκεκριμένου Worksheet

    Φίλε manosb

    Άποψή μου είναι αν δεν ξέρες κάτι μην απαντάς

    Τώρα για τον φίλο μας

    Μπορείς να κάνεις μέσα απο την VB6 ένα reference στο Microsoft Office Excel και μετά γράψε τα παρακάτω

    Dim xl As New Excel.Application

    Set xl = CreateObject("excel.application")
    xl.Visible = True
    xl.WindowState = xlMaximized
    xl.Workbooks.Open App.Path + "\t-TEST.xls"
    xl.ActiveWorkbook.Sheets("et_TAPI").Select

    έτσι έχεις το φύλλο που θες μπροστά

    τώρα για τα κελιά μπορείς να το συνεχίσεις

    xl.ActiveWorkbook.Sheets("et_TAPI").Range("R3C3:R10C10").select

     

     

  •  20-07-2009, 20:23 52636 σε απάντηση της 52635

    Απ: VB, OLE1.Class = "Excel.Sheet.8", OLE1.SourceItem = ? για περιοχή συγκεκριμένου Worksheet

    lexicon:

    Φίλε manosb

    Άποψή μου είναι αν δεν ξέρες κάτι μην απαντάς

    Δεν νομίζω ότι κάποιο από τα σχόλια του manosb ήταν άστοχο ή ακόμα χειρότειρα φανέρωσε άγνοια επί του θέματος.Σε αντίθεση με την κοινότητα της VB6 που δείχνει ολοζώντανη,η ίδια η γλώσσα αποτελεί πλέον κατάλοιπο του παρελθόντος.Και επειδή δεν αναφέρθηκε ως συντήρηση παλαιότερου κώδικα ορθώς δόθηκε η συμβουλή να μην ασχοληθεί μαζί της.Τέλος η οποιαδήποτε αντιπαράθεση "κύρους" ή γνώσεων σε θέματα προγραμματισμού εκτός από δίκοπο μαχαίρι πιστεύω απαγορεύεται από τους όρους του site.

  •  20-07-2009, 21:41 52638 σε απάντηση της 52636

    Απ: VB, OLE1.Class = "Excel.Sheet.8", OLE1.SourceItem = ? για περιοχή συγκεκριμένου Worksheet

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

    Μη τρώτε πολύτιμο χρόνο απο ανθρώπους που ψάχνουν να βρουν λύση στο πρόβλημα τους

  •  20-07-2009, 21:45 52639 σε απάντηση της 52635

    Απ: VB, OLE1.Class = "Excel.Sheet.8", OLE1.SourceItem = ? για περιοχή συγκεκριμένου Worksheet

    lexicon:

    Φίλε manosb

    Άποψή μου είναι αν δεν ξέρες κάτι μην απαντάς

     

    Μάλλον πρέπει να προσδιορίσεις τί εννοείς. Η VB6 δεν είναι απλά obsolete, είναι μία γλώσσα για την οποία η υποστήριξη έχει σταματήσει εδώ και χρόνια. Κοντεύουμε τα 7 χρόνια από τότε που βγήκε το .NET. Είναι πολύ κακή επιλογή, τόσο προγραμματιστικά όσο και επιχειρηματικά, να συνεχίζει κανείς να ασχολείται με αυτή. Επιπλέον, είναι χαμένος χρόνος να προσπαθεί κανείς να γράψει κώδικα που θα καλεί το Excel μέσα από μία γλώσσα η οποία δεν χρησιμοποιείται πλέον.

    Επιπλέον, είναι ΚΑΚΗ ΙΔΕΑ ΑΚΟΜΑ ΚΑΙ ΣΤΗΝ VB6 να σηκώνεις το Excel μόνο και μόνο για να διαβάσεις ή να γράψεις ένα excel sheet. Ακόμα και πριν από 7 χρόνια ΔΕΝ το κάναμε έτσι. Μπορεί ο κώδικας να φαίνεται ότι δουλεύει, αλλά τί θα συμβεί αν δεν υπάρχει το Excel στον υπολογιστή? Τί θα συμβεί αν ξεχάσεις να κλείσεις όπως πρέπει το Excel? Πόσα αντίγραφα θα μείνουν στη μνήμη? Και τί θα γίνει αν φτιάχνεις server components (εννοώ COM+), τα οποία δεν εμφανίζουν UI?
    Αν γράφεις sample κώδικα μπορείς να υποθέσεις ότι ο χρήστης θα έχει Excel, αλλά για πραγματική εφαρμογή δεν μπορείς να το κάνεις αυτό.

    Πριν από 7 χρόνια ο τρόπος με τον οποίο διαβάζαμε και γράφαμε Excel sheets ήταν μέσω του Jet OLEDB provider, με τον οποίο μπορούσαμε να διαβάσουμε τα περιεχόμενα του Excel χωρίς να υπάρχει Excel εγκατεστημένο, καθώς και να τα γράψουμε. Η τεχνική αυτή χρησιμοποιήθηκε για μερικά χρόνια ακόμα μέχρι που το VSTO έκανε περιττή τη χρήση του Jet OLEDB Provider. Μάλιστα, είναι δύσκολο να βρεις πλέον αυτό τον OLEDB Provider καθώς η Microsoft έπαψε να τον περιλαμβάνει στα Data Access components, ενώ δεν έβγαλε ποτέ 64bit έκδοση.
    Ελπίζω ότι δεν χρειάζεται να εξηγήσω γιατί είναι κακό στο 2009 να βγάζεις εφαρμογή που τρέχει μόνο σε 32 bit.

    Αυτός είναι και ο λόγος που ο Μάνος προτείνει τη χρήση Access για διάβασμα/γράψιμο Excel στα γρήγορα. Για πιο σοβαρή δημιουργία/ανάνγωση Excel υπάρχει το VSTO, υπάρχουν και τα XML formats του Office τα οποία υποστηρίζονται και από το Office 2003. Συνεπώς μπορείς άφοβα να θεωρήσεις ότι είναι διαθέσιμα σε όλους τους υπολογιστές.

     

    lexicon, είναι καλό όταν δεν καταλαβαίνεις τί προτείνει κάποιος να μην το απορρίπτεις και να θεωρείς ότι είναι άσχετος. Μπορεί ο άλλος να ξέρει και αυτός ο οποίος έχει να μάθει κάτι καινούριο είσαι εσύ.

    Διαφορετικά μπορεί να δημιουργηθούν σοβαρές παρεξηγήσεις.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  21-07-2009, 14:41 52656 σε απάντηση της 52639

    Απ: VB, OLE1.Class = "Excel.Sheet.8", OLE1.SourceItem = ? για περιοχή συγκεκριμένου Worksheet

    Αυτό που ο lexicon σωστά λέει είναι οτι το θέμα θέτει ένα συγκεκριμένο πρόβλημα και ζητάει μια συγκεκριμένη απάντηση, όχι διάλεξη ή κύρηγμα...

  •  21-07-2009, 14:50 52657 σε απάντηση της 52656

    Απ: VB, OLE1.Class = "Excel.Sheet.8", OLE1.SourceItem = ? για περιοχή συγκεκριμένου Worksheet

     

    ποιος του έκανε διάλεξη ή κύρηγμα? απλά , "επιτέθηκε" στον μάνο, και κανείς δεν κατάλαβε για ποιο λόγο.

    και απλά πήρε μια πιο "δυναμική" απάντηση. εγώ τον μάνο δεν τον ξέρω αλλά το άτομο είναι ένα από τα πιο δραστήρια μέλη του forum, με πολλές απαντήσεις και με πολλές γνώσεις.


    Νικόλαος Καντζέλης
    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