marios07 Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 Καλησπέρα παιδιά, Προσπαθούσα να συντάξω μια VBA macro για την δουλειά μου με την οποία θα μπορώ να ανοίγω ένα ένα κάποια txt αρχεία μέσα στο excel ώστε να βρώ έναν συγκεκριμένο αριθμό. Με λεπτομέρεια: Η μακρο θα πρέπει να ανοίγει ένα τχτ file μέσα σε ένα folder και να κάνει search όλα τα cells για έναν συγκεκριμένο αριθμό που υπάρχει μέσα σε αυτό το txt. Αν δεν βρεί τίποτα θέλω να κλείνει το txt χωρίς να αποθηκεύσει τίποτα και να ανοίξει το επόμενο. Αν τελικά το βρει θέλω να σταματάει η macro έτσι ώστε να μου μείνει αυτό το αρχείο ανοιχτώ στην οθόνη. Μέχρι στιγμής έχω γράψει αυτό αλλά όταν το τρέχω μου βγάζει error: Sub openAllfilesInALocation() Dim i As Integer, wb As Workbook With Application.FileSearch .NewSearch .LookIn = "C:\test_folder\" .SearchSubFolders = False .Filename = "*.txt" .Execute For i = 1 To .FoundFiles.Count 'Open each workbook Set wb = Workbooks.Open(Filename:=.FoundFiles(i)) 'Perform the operation on the open workbook Cells.Select Selection.Find(what:="187956", after:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate If Selection.Find = True Then Exit Sub End If 'Dont Save and close the workbook wb.Close savechanges:=False 'On to the next workbook Next i End With End Sub Μήπως κανείς που κατέχει το αντικείμενο μπορεί να με βοηθήσει? Σας ευχαριστώ πολύ
bokarinho Δημοσ. 19 Μαΐου 2010 Δημοσ. 19 Μαΐου 2010 Καλησπέρα παιδιά, Προσπαθούσα να συντάξω μια VBA macro για την δουλειά μου με την οποία θα μπορώ να ανοίγω ένα ένα κάποια txt αρχεία μέσα στο excel ώστε να βρώ έναν συγκεκριμένο αριθμό. Με λεπτομέρεια: Η μακρο θα πρέπει να ανοίγει ένα τχτ file μέσα σε ένα folder και να κάνει search όλα τα cells για έναν συγκεκριμένο αριθμό που υπάρχει μέσα σε αυτό το txt. Αν δεν βρεί τίποτα θέλω να κλείνει το txt χωρίς να αποθηκεύσει τίποτα και να ανοίξει το επόμενο. Αν τελικά το βρει θέλω να σταματάει η macro έτσι ώστε να μου μείνει αυτό το αρχείο ανοιχτώ στην οθόνη. Μέχρι στιγμής έχω γράψει αυτό αλλά όταν το τρέχω μου βγάζει error: Sub openAllfilesInALocation() Dim i As Integer, wb As Workbook With Application.FileSearch .NewSearch .LookIn = "C:\test_folder\" .SearchSubFolders = False .Filename = "*.txt" .Execute For i = 1 To .FoundFiles.Count 'Open each workbook Set wb = Workbooks.Open(Filename:=.FoundFiles(i)) 'Perform the operation on the open workbook Cells.Select Selection.Find(what:="187956", after:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate If Selection.Find = True Then Exit Sub End If 'Dont Save and close the workbook wb.Close savechanges:=False 'On to the next workbook Next i End With End Sub Μήπως κανείς που κατέχει το αντικείμενο μπορεί να με βοηθήσει? Σας ευχαριστώ πολύ Σπάσε το πρόγραμμα σου σε ρουτίνες, διαδικαστικός προγραμματισμός. Θα φτιάξουμε μία ρουτίνα σε VBA που θα ψάχνει σε ένα αρχείο με βάση το filename και θα επιστρέφει αν βρήκε τον αριθμό ή όχι. Ο αριθμός θα είναι optional argument. Αυτό θα είναι κάπως έτσι: > public function IsNumberInFile(ByVal filename as String, optional Number as Integer) as Boolean ' Code.... end function Κατόπιν θα φτιάξεις μία γενική ρουτίνα που θα την τρέχει το macro σου που με βάση τα ονόματα των αρχείων που θα σου επιτρέπει η Dir$ θα κοιτάζεις αν βρήκες αυτό που θέλεις, δηλαδή το αρχείο, τέλος με την Shell θα ανοίξεις το αρχείο με το notepad.exe καλώντας το process που θα ανοίξει το αρχείο. Μπορώ να σου τα γράψω αν κολλήσεις αλλά από ότι βλέπω κάτι ξέρεις, συνέχισε και θα τα καταφέρεις..
marios07 Δημοσ. 22 Μαΐου 2010 Μέλος Δημοσ. 22 Μαΐου 2010 Thanks πάρα πολύ φίλε μου, το κατάφερα τελικά σπάζοντας το σε search function.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.