Τραβήξτε δεδομένα από ένα κλειστό βιβλίο εργασίας

Anonim

Η εξαγωγή δεδομένων από ένα κλειστό αρχείο σε άλλο βιβλίο εργασίας είναι ένα κοινό αίτημα από τους περισσότερους χρήστες του excel. Θα ήθελαν να τραβήξουν ή να ενοποιήσουν δεδομένα από κλειστά αρχεία. Ωστόσο, αυτό δεν είναι δυνατό. Υπάρχει μια λύση που βοηθά στην επίλυση αυτού του προβλήματος. Η λύση είναι η χρήση κώδικα μακροεντολής.

Ερώτηση: Σε καθημερινή βάση, αφιερώνω χρόνο στην αντιγραφή δεδομένων από το ένα αρχείο στο άλλο. Υπάρχουν δύο αρχεία "Open.xls" & "Closed.xls" και θέλω να αντιγράψω δεδομένα από το "Closed.xls" στο "Open.xls" μέσω κώδικα VBA.

Βασικά πράγματα που πρέπει να γνωρίζετε:

  • Το πρώτο πράγμα είναι ότι πρέπει να γνωρίζουμε το "Usedrange" του κλειστού βιβλίου εργασίας, δηλαδή το "Closed.xls" μέσα στο ανοιχτό βιβλίο εργασίας για π.χ. "Open.xls"
  • Μπορούμε να χρησιμοποιήσουμε τη συνάρτηση IF στο Usedrange του βιβλίου εργασίας "Closed.xls" στο βιβλίο εργασίας "Open.xls" και θα εξάγει τα δεδομένα από το βιβλίο εργασίας "Closed.xls"
  • Εάν το κελί αναφοράς είναι κενό, τοποθετείται #N/A στη θέση του. Χρησιμοποιώντας τη μέθοδο specialcells, μπορείτε στη συνέχεια να διαγράψετε όλα τα σφάλματα #N/A και να αλλάξετε τον τύπο σε τιμές

Για να ξεκινήσουμε, θα αποθηκεύσουμε δύο αρχεία excel 1) Open.xls 2) Closed.xls στη διαδρομή "D: \ Test Folder"

Ακολουθεί το στιγμιότυπο του βιβλίου εργασίας "Closed.xls":

Για να αποθηκεύσετε αυτόματα δεδομένα από το αρχείο "Closed.xls" στο αρχείο "Open.xls", πρέπει να ακολουθήσετε τα παρακάτω βήματα για να ξεκινήσετε τον επεξεργαστή VB

  • Κάντε κλικ στην καρτέλα Προγραμματιστής
  • Από την ομάδα κωδικών, επιλέξτε Visual Basic

  • Αντιγράψτε τον παρακάτω κώδικα στο ThisWorkbook (Closed.xls)
 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, _ Cancel As Boolean) 'Put in the UsedRange Address of Sheet1 Closed.xls (this workbook)' --- Comment Sheet2.Cells (1, 1) = Sheet1.UsedRange.Address End Sub 

  • Για να τραβήξετε τα δεδομένα στο "Open.xls", αντιγράψτε τον ακόλουθο κώδικα στην Τυπική μονάδα
 Sub Importdata () Dim AreaAddress As String Sheet1.UsedRange.Clear Sheet1.Cells (1, 1) = "= 'D: \ Test Folder \" & "[Closed.xls] Sheet2'! RC" AreaAddress = Sheet1.Cells ( 1, 1) Με Sheet1.Range (AreaAddress) .FormulaR1C1 = "= IF ('D: \ Test Folder \" & "[Closed.xls] Sheet1'! RC =" "" ", NA (), 'D: \ Test Folder \ "& _" [Closed.xls] Sheet1 '! RC) "On Error Resume Next .SpecialCells (xlCellTypeFormulas, xlErrors). Clear On Error GoTo 0 .Value = .Value End With End Sub 

  • Αντιγράψτε τον ακόλουθο κώδικα στο ThisWorkbook (Open.xls)
 Private Sub Workbook_Open () Εκτελέστε "Importdata" End Sub 

Τώρα οι κωδικοί VBA είναι έτοιμοι. το μόνο που χρειάζεται να κάνουμε είναι να ανοίξουμε το όνομα αρχείου "Open.xls". Ακολουθεί το στιγμιότυπο του αρχείου "Open.xls":

Ο κώδικας δεν περιορίζεται στο αντίγραφο κελιού από το A1.usedrange. ο κωδικός θα επιλέξει το εύρος εκκίνησης και θα λειτουργήσει τέλεια. Τα αρχεία είναι διαθέσιμα για λήψη και σας συνιστούμε να πάτε.

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

Αν σας άρεσαν τα ιστολόγια μας, μοιραστείτε το με τους φίλους σας στο Facebook. Επίσης, μπορείτε να μας ακολουθήσετε στο Twitter και το Facebook.

Θα θέλαμε πολύ να σας ακούσουμε, ενημερώστε μας πώς μπορούμε να βελτιώσουμε, να συμπληρώσουμε ή να καινοτομήσουμε το έργο μας και να το κάνουμε καλύτερο για εσάς. Γράψτε μας στον ιστότοπο email