Εμφάνιση ενός μόνο μηνύματος
  #10  
Παλιά 12-05-11, 17:35
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλησπέρα Νίκο!
Ήσουν κατατοπιστικότατος!
Με κάποιες αλλαγές που έγιναν πιστεύω να σε εξυπηρετεί ο παρακάτω κώδικας:

Κώδικας:
Option Explicit

Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
                                             ByVal lpPath As String) As Long

Const ThePath = "C:\Data\"    'Το όνομα του φακέλου

Sub Export2csv()
    Dim rng As Range, d As Range, strCSV As String, tmpString As String, fso As Object, _
        oStream As Object, i As Integer, r As Long, RowsCount As Long, _
        c4Seperator As String, c3Seperator As String, c2Seperator As String, cSeperator As String

    'Αν χρησιμοποιηθεί το σύμβολο ";" ως οριοθέτης,
    'θα πρέπει να αφαιρεθεί το τελευταίο "True" από τη γραμμή "Set oStream =..."
    c4Seperator = vbTab & vbTab & vbTab & vbTab & vbTab  '";;;;"
    c3Seperator = vbTab & vbTab & vbTab & vbTab    '";;;"
    c2Seperator = vbTab & vbTab    '";;" '
    cSeperator = vbTab    '";"
    MakeSureDirectoryPathExists "C:\Data\"

    With Application
        .ScreenUpdating = False

        r = Range("B" & Rows.Count).End(xlUp).Row
        Set rng = Range("B2:B" & r)
        RowsCount = rng.Rows.Count

        For i = Range("G1").Column To Range("G1").End(xlToRight).Column    'όλοι οι κωδικοί από το G1 έως τον τελευταίο
            Set d = Range(Cells(2, i), Cells(RowsCount, i))
        '   d.Select
            For r = 1 To RowsCount
                If d(r) <> 0 Then
                    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
            Next
            tmpString = Cells(1, i) & "_" & Replace(Format(Now, "dd_mm_yy hh:mm:ss"), ":", "_") & ".csv"
            Set fso = CreateObject("Scripting.FileSystemObject")

            'Αν χρησιμοποιηθεί το σύμβολο ";" ως οριοθέτης,θα πρέπει να αφαιρεθεί το τελευταίο "True"
            Set oStream = fso.CreateTextFile(ThePath & tmpString, True, True)
            oStream.Write strCSV
            oStream.Close
            Set fso = Nothing
            strCSV = vbNullString
            tmpString = vbNullString
        Next

        tmpString = ThePath & "All_" & Replace(Format(Now, "dd_mm_yy hh:mm:ss"), ":", "_") & ".xls"
        ActiveSheet.Copy
        ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
        ActiveWorkbook.SaveAs tmpString, ThisWorkbook.FileFormat
        ActiveWorkbook.Close , False
        .ScreenUpdating = True
    End With
End Sub
Καλή συνέχεια!

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 14-05-11 στις 09:56.
Απάντηση με παράθεση