Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Excel vba eksport do csv średnik ;

Grzesxyz 29 Dec 2014 10:58 6345 18
  • #1
    Grzesxyz
    Level 11  
    Witam,

    Mam kod który działa bez problemu, ale co w nim zmienić, żeby dzielił Średnikiem ; , a nie przecinek.
    
    Dim MyPath As String
    Dim MyFileName As String
    Dim x As Integer
    Dim rCell As Range
        
     
    MyPath = "F:\HURT\ZAM\Zamcsv"
     
    MyFileName = "A"
    While Len(MyFileName) < 7 - Len(Sheets("Zamówienie").Range("G1").Value)
        MyFileName = MyFileName & "0"
        Wend
    MyFileName = MyFileName & Sheets("Zamówienie").Range("G1").Value
     
    If Not Right(MyPath, 1) = "\" Then MyPath = MyPath & "\"
    If Not Right(MyFileName, 4) = ".csv" Then MyFileName = MyFileName & ".csv"
     
    Sheets("CSV").Copy
     
    With ActiveWorkbook
     
        .SaveAs Filename:= _
            MyPath & MyFileName, _
            FileFormat:=xlCSV, _
            CreateBackup:=False
     
        .Close False
    
  • #2
    PRL
    Level 40  
    Twój kod zapisuje, dzieląc średnikiem.
    Nie jest to kwestia kodu, a ustawień systemu, gdyż jak wiadomo, w Polsce przecinek jest separatorem dziesiętnym, stąd użyty jest średnik.
  • #3
    Grzesxyz
    Level 11  
    W systemie to wiem, że da się ustawić, z tym, że to ustawienie jest na stałe do wszystkich arkuszy.
  • #4
    PRL
    Level 40  
    W takim razie napisałem taki prosty kod:

    Code: vbscript
    Log in, to see the code


    Lub bardziej uniwersalnie:

    Code: vbscript
    Log in, to see the code


    P.S. Znowu nie działa informowanie mejlem o nowych wątkach?
  • #5
    marek003
    Level 40  
    Nie wiem jaki to excel (nie pamiętam jak było w starszych) ale tak podpowiem "niepewnie", że może wystarczy zmienić format zapisu plku csv.

    W E2010 linie kodu:
    FileFormat:=xlCSV, _
    zastąpić
    FileFormat:=xlCSVMSDOS, _

    Czyli csv dla dos'a, wtedy rozdzielanie jest wg średnika.
  • #6
    PRL
    Level 40  
    To jest tutaj, jak się nie mylę, pod pozycją 'separator listy'.

    Excel vba eksport do csv średnik ;
  • #7
    Grzesxyz
    Level 11  
    FileFormat:=xlCSVMSDOS, _

    Zmienia jedynie czcionkę, nie ma polskich znaków.
    liczby z ułamkiem zmienia przecinek na kropkę, a komórki dzieli przecinkiem.
  • #8
    PRL
    Level 40  
    A kod, który wstawiłem nie spełnia Twoich wymagań?
    Może coś zmienić?
  • #9
    marek003
    Level 40  
    To ja zapytam jaki masz znaczek dla separatora listy? Fotka którą przedstawił kolega PRL?

    U mnie nawet jak wybiorę w excelu csv z przecinkami to robi ze średnikiem.
  • #10
    Grzesxyz
    Level 11  
    Mam ustawiony przecinek
  • #11
    PRL
    Level 40  
    Quote:
    W systemie to wiem, że da się ustawić, z tym, że to ustawienie jest na stałe do wszystkich arkuszy.


    Albo z poziomu kodu zmieniesz na średnik i zapiszesz do csv i przywrócisz przecinek, albo wykorzysztaj ZapiszCSV.
    Proszę też o odpowiedź na zadane pytanie.:)
  • #12
    Grzesxyz
    Level 11  
    Separator listy ;
  • #13
    marek003
    Level 40  
    Zauważyłem ciekawostkę:
    Jeżeli robię "ręcznie" zapisz jako csv to co bym nie wybrał (odmiana formatu) zapisany plik robi mi się ze średnikiem.
    Natomiast jeżeli to robię za pomocą kodu VBA (SaveAs i Fileformat) jest zawsze przecinek.
  • #14
    PRL
    Level 40  
    Quote:
    A kod, który wstawiłem nie spełnia Twoich wymagań?
    Może coś zmienić?


    Chodzi mi o odpowiedź na powyższe.
  • #15
    Grzesxyz
    Level 11  
    Mój kod jest tylko wycinkiem z całej reszty, i chodziło mi tylko o zmodyfikowanie czegoś aby zapisywał w .csv z rozdzieleniem za pomocą średnika.
    Plik będzie na serwerze, a z niego będzie korzystać kilka osób na różnych komputerach z różnymi wersjami OFFICE.
  • #16
    PRL
    Level 40  
    Dlatego też powinienieś sam obsłużyć na stacjach roboczych zapis ze średnikiem.
    Niezależne od wersji językowej Windows i Office.
    Wciąż nie uzyskałem od Ciebie odpowiedzi dlaczego mój kod Ci nie pasuje...
  • #17
    Grzesxyz
    Level 11  
    Pierwszy kod od PRL zapisuje do pliku z rozszerzeniem .csv , ale kopiuje wszystko do tych samych komórek usuwając formatowanie komórek. Mój kod wartości z komórek z jednego wiersza zapisuje do A1 , A2 itd. rozdzielając wartości z komórek przecinkiem, tak jak przy kopiowaniu książki adresowej z telefonu do .csv .

    Drugi kod próbuję zmodyfikować, bo po wklejeniu do reszty wywala błąd.
  • #18
    marek003
    Level 40  
    PRL wrote:
    Wciąż nie uzyskałem od Ciebie odpowiedzi dlaczego mój kod Ci nie pasuje...

    Myślę że kolega Grzesxyz nie do końca wie (bez urazy jeżeli się mylę) jak "wrzucić"/zaadoptować twój kod do swojego kodu (Zwróć uwagę na "jego" nazewnictwo pliku w "jego" kodzie oraz na ścieżkę dostępu)
    Może zasugerować twoje zmiany (oczywiście po korektach i bez rozbicia na "dwie" procedury) zamiast "jego" sekwencji kodu:
    .SaveAs Filename:= _
    MyPath & MyFileName, _
    FileFormat:=xlCSV, _
    CreateBackup:=False

    Wtedy łatwiej mu będzie sprawdzić czy mu to odpowiada :)


    edit
    ----------
    :) Spóźniłem się z sugestią :)


    Do Grzesxyz
    Nie mów że z plikiem CSV przechodzi ci formatowanie - To niemożliwe bo CSV to zwykły zapis tekstowy z podziałem na kolumny (znak podziału np ";" ) i wersy (znak podziału np enter lub tzw "powrót karetki") - nic więcej. Otwórz taki plik notatnikiem a zobaczysz co zawiera.
  • #19
    Grzesxyz
    Level 11  
    Po dodaniu Local:=True zapisuje ze średnikiem;
    Okazało się, że nowy excel jak otwiera plik .csv ze średnikiem to dzieli na komórki i nie widać średnika, dopiero po zmianie rozszerzenia na .txt widać rozdzielenie średnikiem.