Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Γενικά] Πρόβλημα με πολλαπλό save σε .csv (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/1126-problima-me-pollaplo-save-se-csv.html)

nikosjc 13-05-11 08:37

Εντάξει θεός! Δεν έχω λόγια!!! :respect:

Θα κάτσω να βρω τις... διαφορές τώρα από τον προηγούμενο κώδικα μπας και μάθω τίποτα!

Σ'ευχαριστώ πάρα πολύ! Θα επανέλθω σύντομα και με το έτερο ερώτημα μου...

nikosjc 13-05-11 13:15

2 Συνημμένο(α)
Φίλε Τάσο, τελικά έχω πρόβλημα και πάλι. Ενώ... χωροταξιακά το csv βγαίνει άψογο, δυστυχώς και πάλι δεν μπορώ να το εισάγω στο πρόγραμμα που θέλω. Ο διαχωρισμός με Tab που βγαζει το αρχείο όπως είναι ο κώδικας σίγουρα δεν κάνει.
Δοκίμασα να αφαιρέσω το 2ο True όπως γράφεις στον κώδικα για να έχει διαχωρισμό με κόμματα, αλλά ανοίγοντας το csv με το εξελ μου δείχνει τετραγωνάκια, ανοίγοντας το με txt φαίνεται να έχει κενά αντί για κόμματα (επισυνάπτω φώτος).

Αν μπορέσουμε να κάνουμε τα τετραγωνάκια κόμματα νομίζω ότι τελειώσαμε!!! :unsure:

Tasos 13-05-11 15:46

Καλησπέρα Νίκο!
Από ότι βλέπω το πρόβλημα υπάρχει στις ρυθμίσεις του συστήματος σου ή ακόμα και σε γραμματοσειρά.

Δοκίμασε: =Code(A1) σε ένα κελί. Η τιμή που θα εμφανίσει θα πρέπει να είναι 59.

Το λειτουργικό σου θα πρέπει να έχει διαχωριστικό Λίστας το ερωτηματικό (στον Πίνακα Ελέγχου\Ώρα, Γλώσσα και Περιοχή) για να μπορεί να διαχωριστούν αυτόματα οι στήλες από την Excel.

Μπορείς να μας επισυνάψεις αυτό το αρχείο με μερικές γραμμές για να δούμε;

Τάσος

nikosjc 13-05-11 16:51

1 Συνημμένο(α)
Το φαντάστηκα ότι κάτι θα παίζει με τις ρυθμίσεις μου, αλλά δεν ξέρω τι.

Εσύ Τάσο όταν τρέχεις την μακροεντολή στο βγάζει κανονικά με κόμματα το csv?

Δοκίμασα το =Code(A1) στο csv αρχείο από το οποίο έχω επισυνάψει τις φώτος (αυτό με τα τετραγωνάκια) και βγάζει αποτέλεσμα 9!

Στον Πίνακα Ελέγχου (αν είναι αυτό που φαίνεται στην φώτο) ως seperator έχει ερωτηματικό (ελληνικό).

Ποιο αρχείο θέλεις να σου επισυνάψω? Το csv δεν με αφήνει να το ανεβάσω, εκτός κι αν βάλω κάνα λινκ από rapidshare ή κάτι τέτοιο. Να σημειώσω ότι έχω XP SP3 και office 2002 SP3 αν λέει κάτι αυτό, αν και απ'ότι θυμάμαι και σπίτι μου με win7 και office 2007 είχα το ίδιο πρόβλημα, αλλά θα το ξαναδοκιμάσω...

Tasos 13-05-11 20:00

Νίκο, ο χαρακτήρας 9 είναι το Tab.

Για δοκιμή, τρέξε το παρακάτω:

Κώδικας:

Sub test()
    MsgBox Asc(vbTab)
    MsgBox Asc(";")
End Sub

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

Οι μεταβλητές πρέπει να τροποποιηθούν και να εμφανίζονται έτσι:

Κώδικας:

    c4Seperator = ";;;;"
    c3Seperator = ";;;"
    c2Seperator = ";;"
    cSeperator = ";"


'και στη δημιουργία του αντικειμένου  oStream

Set oStream = fso.CreateTextFile(ThePath & tmpString, True, True)

'Δοκίμασε το με, ή χωρίς το τρίτο όρισμα
'Αναφορικα η μέθοδος CreateTextFile
'object.CreateTextFile(Filename, Overwrite as Boolean, Unicode as Boolean]

Φιλικά

Τάσος

gr8styl 13-05-11 20:12

Παράθεση:

Αρχική Δημοσίευση από nikosjc (Μήνυμα 6464)
Το φαντάστηκα ότι κάτι θα παίζει με τις ρυθμίσεις μου, αλλά δεν ξέρω τι....

Καλησπέρα σας.
Αν μου επιτρέπετε να επέμβω, θα έλεγα ότι το πρόβλημα δεν νομίζω ότι είναι στις ρυθμίσεις του Νίκου, αλλά στο ότι το Excel δεν μπορεί να διαχειριστεί σωστά το οποιοδήποτε διαχωριστικό εκτός του ΤΑΒ σε unicode αρχεία.

Φίλε Νίκο ή θα πρέπει να συμβιβαστείς με το Tab σαν διαχωριστικό, ή αν δουλεύεις σε σύστημα με ελληνικά windows, θα έλεγα ότι μπορείς να ξεχάσεις το unicode και να δουλέψεις με ANSI (όχι και πολύ ορθόδοξη σαν πρόταση αυτή η τελευταία).
To .csv σαν format στο "Save as" του Excel αν παρατηρήσεις δεν σου δίνει δυνατότητα επιλογής Unicode σε αντίθεση με το .txt δηλαδή το .csv είναι συμβατό με ANSI και όχι Unicode. Το δε .txt χρησιμοποιεί το Tab σαν διαχωριστικό.

Για όποιον θέλει περισσότερες πληροφορίες μπορεί να ανατρέξει στην αγγλική wikipedia
Comma-separated values - Wikipedia, the free encyclopedia
ή να δει τα σχετικά άρθρα περί CSV
RFC 4180 - Common Format and MIME Type for Comma-Separated Values (CSV) Files

CSV Comma Separated Value File Format - How To - Creativyst - Explored,Designed,Delivered.(sm)


Ελπίζω να βοήθησα.
Θανάσης
ΥΓ για να ανεβάσεις το csv Νίκο απλά μετονόμασε το σε .txt ή συμπίεσε το σε zip

nikosjc 13-05-11 22:16

Τάσο τελικά όντως ήταν δικιά μου η βλακεία! Ξέχασα να σβήσω τα tabs από τα cSeperators! Για την ακρίβεια νόμιζα ότι χρησιμοποιούνται για την μετακίνηση στις στήλες και δεν κατάλαβα ότι βάζοντας το ";" δημιουργείται ο διαχωρισμός. Τώρα έμαθα!

Βγαίνει μια χαρά το csv, βέβαια η δοκιμή θα γίνει τη δευτέρα στη δουλειά, αλλά νομίζω ότι είμαστε οκ. Και πάλι σ'ευχαριστώ για τον κόπο και τον χρόνο σου!!!

Φίλε gr8styl, με τις λίγες γνώσεις που έχω πάνω στο θέμα το είχα ψιλοψάξει για διαφορές unicode και ansi, αλλά δεν είχα βρει και πολλά πράγματα, τουλάχιστον όχι αρκετά σαφή για να με βοηθήσουν στο πρόβλημα που είχα. Σ'ευχαριστώ πολύ για την ενημέρωση και θα το ψάξω.

Εντελώς εγκυκλοπαιδικά τώρα, επειδή έκανα μια ψιλοτροποποίηση στον κώδικα για έναν επιπλέον έλεγχο που χρειάστηκα, και επειδή οι γνώσεις μου στον προγραμματισμό σταματάνε κάπου στα if, for, κλπ, ρίξτε μια ματιά οι πιο έμπειροι στο παρακάτω, πως θα μπορούσε να είναι πιο μαζεμένος ο κώδικας μου?

Παράθεση:

For i = Range("G1").Column To Range("G1").End(xlToRight).Column
Set d = Range(Cells(2, i), Cells(RowsCount, i))
d.Select
For r = 1 To RowsCount
If d(r) <> 0 Then
If InStr(rng(r).Offset(, 2).Text, "1001-") Then
tmpString = _
c2Seperator & _
rng(r).Text & _
c4Seperator & _
d(r).Text & _
c4Seperator & _
cSeperator & _
1 & _
c2Seperator & _
cSeperator & _
rng(r).Offset(, 2).Text & _
cSeperator & _
rng(r).Offset(, 3).Text & _
vbNewLine
strCSV = strCSV & tmpString
tmpString = vbNullString

Else
tmpString = _
c2Seperator & _
rng(r).Text & _
c4Seperator & _
d(r).Text & _
cSeperator & _
rng(r).Offset(, 2).Text & _
c4Seperator & _
1 & _
c3Seperator & _
rng(r).Offset(, 3).Text & _
vbNewLine
strCSV = strCSV & tmpString
tmpString = vbNullString
End If
End If
Next
tmpString = Cells(1, i) & ".csv"
Set fso = CreateObject("Scripting.FileSystemObject")
Στην ουσία ήθελα όταν κάποιοι κωδικοί ξεκινάνε με "1001-" αντί να μπαίνουν μαζί με τους άλλους, να μπαίνουν στην στήλη Q. Οπότε πρόσθεσα τα κόκκινα και τα μπλε. Δουλεύει κανονικά έτσι όπως το έχω (βέβαια ακόμα και τα cSeperator συνδυαστικά τα έβαλα, δεν έφτιαξα άλλα!), απλά ενημερωτικά ρωτάω αν υπάρχει κάποιος λιγότερο... μπακάλικος τρόπος για τον 2ο έλεγχο?


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

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2