Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 75342 Skopiuj do schowka Zapisz jako txt + formatowanie
Autor Wiadomość
wiorek
Exceloholic


Posty: 130
Wysłany: 07-12-2023, 17:35   Zapisz jako txt + formatowanie

Hej,

Próbuję dopasować zapisywanie arkusza w formacie txt i kodowaniu utf-8 ale nie wychodzi. Może ktoś z Was ma jakiś pomysł ? Internet przeszukany, nie dałem rady.

Poniżej makro, którego używam

Kod:
Sub savetxt()

  Dim csvFiles(1 To 3) As String, i As Integer
    Dim wsName As Variant
    Dim OutApp As Object, OutMail As Object
   
    i = 0
    For Each wsName In Array("Sheet4")     'nazwa arkusza
        i = i + 1
        csvFiles(i) = ThisWorkbook.Path & "\" & wsName & Format(Now(), "dd-mm-yyyyhhmmss") & ".txt"
        ThisWorkbook.Worksheets(wsName).Copy
        ActiveWorkbook.SaveAs csvFiles(i), FileFormat:=xlTextPrinter
        'FileFormat:=xlCSVUTF8
        ActiveWorkbook.Close False
    Next

   
End Sub


Jak używam
Kod:
 ' FileFormat:=xlTextPrinter
to zapisuje się plik OK, ale mam w Excelu polskie znaki i tworzą się krzaki

jak zamienię zapisywanie na
Kod:
'FileFormat:=xlCSVUTF8
to nie ma krzaków, ale dodają się cudzysłowy np. jest

Kod:
"""data"": {"


a powinno być

Kod:
"data": {


Macie jakiś pomysł, jak zapisać arkusz w kodowaniu UTF-8, z zachowaniem polskich znaków i bez dodawania cudzysłowów ?
ID posta: 431984 Skopiuj do schowka
 
 
Tajan


Pomógł: 5407 razy
Posty: 11795
Wysłany: 07-12-2023, 22:14   

Trochę "na okrętkę" ale powinno działać:
Kod:
Sub savetxt()
    Dim csvFiles(1 To 3) As String, i As Integer
    Dim wsName As Variant
    Dim OutApp As Object, OutMail As Object
    Dim tmpFile As String
    Dim st1 As Object, st2 As Object
   
    Const adSaveCreateOverWrite = 2
    Const adTypeText = 2

    tmpFile = ThisWorkbook.Path & "\TMPFILE.TXT"
    i = 0
   
    For Each wsName In Array("Sheet4")           'nazwa arkusza
        i = i + 1
        csvFiles(i) = ThisWorkbook.Path & "\" & wsName & Format(Now(), "dd-mm-yyyyhhmmss") & ".txt"
        ThisWorkbook.Worksheets(wsName).Copy
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs tmpFile, FileFormat:=xlTextPrinter
        Application.DisplayAlerts = True
        'FileFormat:=xlCSVUTF8
        ActiveWorkbook.Close False
       
        Set st1 = CreateObject("ADODB.Stream")
        Set st2 = CreateObject("ADODB.Stream")
       
        With st1
            .Charset = "Windows-1250"
            .Type = adTypeText
            .Open
            .LoadFromFile tmpFile
        End With
       
        With st2
            .Charset = "utf-8"
            .Type = adTypeText
            .Open
            .WriteText st1.ReadText
            .SaveToFile csvFiles(i), adSaveCreateOverWrite
        End With
   
        st1.Close
        st2.Close   
        Kill tmpFile
   
 Next

   
End Sub
ID posta: 431996 Skopiuj do schowka
 
 
wiorek
Exceloholic


Posty: 130
Wysłany: 07-12-2023, 22:42   

Tajan napisał/a:
Trochę "na okrętkę" ale powinno działać:


Działa, dziękuje :beer
ID posta: 431998 Skopiuj do schowka
 
 
wiorek
Exceloholic


Posty: 130
Wysłany: 08-12-2023, 09:34   

Hej,
Właściwie jest jeszcze jeden problem, wczytywałem wczoraj wszystkie dane z "ó" i pokazywało się poprawnie, sprawdziłem dzisiaj inne polskie znaki, i na nich niestety wykrzacza.


"ąćęłńóśżź"

pokazuje się w txt po zapisie jako

"?????ó???"
ID posta: 432003 Skopiuj do schowka
 
 
Tajan


Pomógł: 5407 razy
Posty: 11795
Wysłany: 08-12-2023, 12:09   

Nadal zapisujesz jako "FileFormat:=xlTextPrinter"? U mnie to działa. Sprawdziłem. Załącz przykładowy plik Excela oraz błędny plik tekstowy, wykonany na jego podstawie.

tekst.jpg
Plik ściągnięto 11 raz(y) 98.1 KB

arkusz.jpg
Plik ściągnięto 10 raz(y) 46.29 KB

Ostatnio zmieniony przez Tajan 08-12-2023, 12:38, w całości zmieniany 1 raz  
ID posta: 432011 Skopiuj do schowka
 
 
wiorek
Exceloholic


Posty: 130
Wysłany: 08-12-2023, 12:36   

Tajan napisał/a:
Nadal zapisujesz jako "FileFormat:=xlTextPrinter"? U mnie to działa. Sprawdziłem. Załącz przykładowy plik Excela oraz błędny plik tekstowy, wykonany na jego podstawie.

Tak, nic nie zmieniłem w kodzie.
W załączniku excel i txt, który otrzymałem

saveas.xlsm
Pobierz Plik ściągnięto 12 raz(y) 17.57 KB

Sheet408-12-2023123524.txt
Pobierz Plik ściągnięto 14 raz(y) 102 Bajtów

ID posta: 432014 Skopiuj do schowka
 
 
Tajan


Pomógł: 5407 razy
Posty: 11795
Wysłany: 08-12-2023, 12:56   

No, nie wiem... U mnie działa normalnie. Masz polską wersję Excela i Windowsa?

UTF8_txt.jpg
Plik ściągnięto 12 raz(y) 21.63 KB

Sheet408-12-2023124922.txt
Pobierz Plik ściągnięto 17 raz(y) 150 Bajtów

ID posta: 432015 Skopiuj do schowka
 
 
wiorek
Exceloholic


Posty: 130
Wysłany: 08-12-2023, 16:27   

Tajan napisał/a:
No, nie wiem... U mnie działa normalnie. Masz polską wersję Excela i Windowsa?


Wydawało mi się do dzisiaj, że mam polską wersję ale wygląda na to, że nie.

Przy zapisywaniu ręcznym excela jako txt, również polskie znaki się nie zapisują.
Można jakoś dopasować do innego języka systemowego?
Też zauważyłem różnice z oznaczeniem UTF - u mnie UTF-8 ze znacznikiem u Ciebie UTF-8 BOM, ale finalnie to jest z tego co widzę chyba to samo ( w załączeniu po otworzeniu Twojego pliku txt )?

txt.png
Plik ściągnięto 8 raz(y) 13.89 KB

ID posta: 432020 Skopiuj do schowka
 
 
Tajan


Pomógł: 5407 razy
Posty: 11795
Wysłany: 08-12-2023, 17:38   

Spróbuj zmienić:
Kod:
.Charset = "Windows-1250"
np. na
Kod:
.Charset = "Windows-1252"
bo chyba tutaj należy szukać przyczyny. Nie mam doświadczenia z innymi wersjami narodowymi, więc nie bardzo wiem jak ten problem rozwiązać. Jezeli nie pomoże to "zakomentuj" linię:
Kod:
Kill tmpFile
postaraj się sprawdzić z jaką stroną kodową został zapisany plik "TMPFILE.TXT" i odpowiednio dostosuj "Charset" streama "ts1".
ID posta: 432024 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona uĹźywa plikĂłw cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przegl�darce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe