Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [Excel07] Εξωτερικά δεδομένα

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 23-02-12, 12:28
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-09-2010
Περιοχή: Θεσσαλονίκη
Μηνύματα: 66
Προεπιλογή Εξωτερικά δεδομένα

Παρακαλώ την βοήθειά σας
Σε ένα αρχείο Excel κάνω λήψη εξωτερικών δεδομένων από αρχείο Excel ( "*.xls, *.xlsx, *.xlsm, *.xlsb")
Το ζητούμενο είναι κώδικας VBA για να μπορώ να αλάξω το αρχείο προέλευσης των εξωτερικών δεδομένων ( το αρχείο, όχι την διαδρομή του αρχείου) και να κάνω ανανέωση των δεδομένων.

Σημείωση : Τα αρχεία (Πηγές) εξωτερικών δεδομένων έχουν την ίδια μορφή.

Σας ευχαριστώ
Γιώργος

Τελευταία επεξεργασία από το χρήστη Flashgordon61 : 23-02-12 στις 12:48.
Απάντηση με παράθεση
  #2  
Παλιά 23-02-12, 14:01
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 19-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 758
Προεπιλογή

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

Αφου τελειώσεις με την καταγραφη της μακροεντολής, άνοιξε τον VBE (Alt+F11) και κάνε αντικατάσταση της μιας και μοναδικής εμφάνισης του ονόματος του αρχείου που άνοιξες, με το παρακάτω συμπεριλαμβανομένων των εισαγωγικών και την αλλαγή γραμμής
Κώδικας:
" & _
InputBox("Give filename") & "
Δηλαδή αν το όνομα είναι Book1.xls το υπάρχον περιεχόμενο ...\Book1.xls;... θα γίνει
...\" & _
InputBox("Give filename") & "
;...

Τρέξε την μακροεντολή και πες μας αν έγινε.

Θανάσης
Απάντηση με παράθεση
  #3  
Παλιά 29-02-12, 19:06
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-09-2010
Περιοχή: Θεσσαλονίκη
Μηνύματα: 66
Προεπιλογή

Φίλε Θανάση σ' ευχαριστώ πολύ, αφού πρώτα ζητήσω συγνώμη για την αργοπορία της απάντησης (έλειπα ταξίδι).
Αντικαταστώντας το όνομα του αρχείου με τον κώδικα, πράγματι βγαίνει το InputBox που μας προτρέπει να γράψουμε
το όνομα του νέου αρχείου.
Τώρα, επειδή τα ονόματα των αρχείων πηγών είναι μεγάλα (με πολλούς και ενδεχομένως ελληνικούς χαρακτήρες)
και με διαδικασία copy/paste του ονόματος του αρχείου και με δεδομένο την μη συμβατότητα Ελληνικών & VBA ,
προκύπτουν προβλήματα.
Μία λύση που βρήκα είναι η μετατροπή των αρχείων πηγών σε αρχεία κειμένου (Save as type : Unicode Text (*.txt))
και λήψη εξωτερικών δεδομένων από κείμενο.
Καλώντας με VBA ανανέωση :
Κώδικας:
ActiveWorkbook.RefreshAll
ανοίγει παράθυρο (Import Text File) και πηγαίνοντας στο φάκελο που έχουμε αποθηκευμένα τα αρχεία (Text Files) επιλέγουμε.
Καλώντας για πρώτη φορά τον κώδικα (ActiveWorkbook.RefreshAll) ο προεπιλεγμένος φάκελος του παραθύρου (Import Text File)
είναι Τα έγραφά μου (My Documents),τις επόμενες φορές ειναι ο φάκελος που έχουμε τα αρχεία πηγές.
Επειδή τα αρχεία πηγές είναι αποθηκευμένα σε έναν δίσκο Δυκτίου και η διαδρομή είναι μεγάλη θα ήθελα να ήξερα αν μπορούμε
απο την αρχή να προσδιορίσουμε τον προεπιλεγμένο φάκελο του παραθύρου (Import Text File).

Και πάλι σ' ευχαριστώ.

Γιώργος
Απάντηση με παράθεση
  #4  
Παλιά 01-03-12, 00:48
Το avatar του χρήστη gr8styl
Super Moderator
Όνομα: Θανάσης Στυλιανίδης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 19-10-2009
Περιοχή: Βρυξέλλες, Βέλγιο
Μηνύματα: 758
Προεπιλογή

Αγαπητέ Γιώργο,
πολύ σωστή η επιλογή να χρησιμοποιήσεις αρχεία κειμένου.
Για το ερώτημά σου τώρα.
Το πιο απλό είναι να κάνεις μια συντόμευση/shortcut (copy και paste as shortcut μέσω του Explorer) του φακέλου που περιέχει τα αρχεία πηγή, στον φάκελο "Τα εγγραφά μου". έτσι πατώντας το θα πηγαίνεις γρήγορα στον επιθυμητό φάκελο.

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

Τέλος το αντίστοιχο της αναναίωσης μέσω VBA γίνεται με την εντολή
ThisWorkbook.Sheets(1).Range("A2").Refresh'Υποθέτω ότι τα δεδομένα που εισάγεις από το αρχείο κειμένου αρχίζουν από το κελί Α2 του πρώτου φύλλου και πέρα

Και για να το καλύψουμε πλήρως,
Ο παρακάτω κώδικας δίνει μια λύση με VBA που όμως δεν νομίζω ότι είναι απαραίτητη για την περίπτωσή σου.
Ο κώδικας κάνει αναναιώση των δεδομένων για όλα τα ερωτήματα (query) που υπάρχουν στο ενεργό φύλλο και μάλιστα για κάθε query ανοίγει στον φάκελο που περιέχει το προηγούμενο αρχείο πηγή. Το On Error Resume Next είναι για να μην κρεμάσει με Error 1004 αν δεν επιλέξεις κάποιο αρχείο.
Κώδικας:
Sub my_macro()
Dim qry As QueryTable
On Error Resume Next
For Each qry In ActiveSheet.QueryTables
    qry.Refresh
Next
End Sub
Απάντηση με παράθεση
Απάντηση στο θέμα

Ετικέτες
vba, εξωτερικές αναφορές


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Γενικά] Δεδομένα πίνακα σε φόρμα panths Excel - Ερωτήσεις / Απαντήσεις 3 17-08-16 10:42
Δεδομενα απο web σελιδα σε φορμα artchrist73 Access - Ερωτήσεις / Απαντήσεις 1 30-08-15 17:47
Access με Εξωτερικά Δεδομένα απο xls tzvangel Access - Ερωτήσεις / Απαντήσεις 4 11-10-14 11:05
[Γενικά] Δεδομένα annoyla Excel - Ερωτήσεις / Απαντήσεις 12 28-03-12 01:51
[ Εκθέσεις ] Όταν δεν υπάρχουν δεδομένα... Meteora Access - Ερωτήσεις / Απαντήσεις 5 19-02-10 15:40


Η ώρα είναι 08:05.