ID tematu: 75342
![Skopiuj do schowka](http://www.excelforum.pl/images/ico_clipboard.gif) |
Zapisz jako txt + formatowanie |
Autor |
Wiadomość |
wiorek
Exceloholic
![Exceloholic](../templates/xandgreen/images/ranks/ranks_light4.gif)
Posty: 132
|
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
a powinno być
Macie jakiś pomysł, jak zapisać arkusz w kodowaniu UTF-8, z zachowaniem polskich znaków i bez dodawania cudzysłowów ? |
|
![](../templates/xandgreen/images/topic_merge.gif) | ID posta:
431984
|
|
|
![](../templates/xandgreen/images/spacer.gif) |
|
|
|
Tajan
![Junior Admin](../templates/xandgreen/images/ranks/junior admin1.gif)
Pomógł: 5573 razy Posty: 12088
|
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
|
|
|
![](../templates/xandgreen/images/topic_move.gif) | ID posta:
431996
|
|
|
![](../templates/xandgreen/images/spacer.gif) |
|
|
wiorek
Exceloholic
![Exceloholic](../templates/xandgreen/images/ranks/ranks_light4.gif)
Posty: 132
|
Wysłany: 07-12-2023, 22:42
|
|
|
Tajan napisał/a: | Trochę "na okrętkę" ale powinno działać:
|
Działa, dziękuje |
|
![](../templates/xandgreen/images/topic_move.gif) | ID posta:
431998
|
|
|
![](../templates/xandgreen/images/spacer.gif) |
|
|
wiorek
Exceloholic
![Exceloholic](../templates/xandgreen/images/ranks/ranks_light4.gif)
Posty: 132
|
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
"?????ó???" |
|
![](../templates/xandgreen/images/topic_move.gif) | ID posta:
432003
|
|
|
![](../templates/xandgreen/images/spacer.gif) |
|
|
Tajan
![Junior Admin](../templates/xandgreen/images/ranks/junior admin1.gif)
Pomógł: 5573 razy Posty: 12088
|
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
|
![](../files/thumbs/t_tekst_809.jpg) |
Plik ściągnięto 16 raz(y) 98.1 KB |
arkusz.jpg
|
![](../files/thumbs/t_arkusz_479.jpg) |
Plik ściągnięto 15 raz(y) 46.29 KB |
|
Ostatnio zmieniony przez Tajan 08-12-2023, 12:38, w całości zmieniany 1 raz |
|
![](../templates/xandgreen/images/topic_move.gif) | ID posta:
432011
|
|
|
![](../templates/xandgreen/images/spacer.gif) |
|
|
wiorek
Exceloholic
![Exceloholic](../templates/xandgreen/images/ranks/ranks_light4.gif)
Posty: 132
|
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 46 raz(y) 17.57 KB |
Sheet408-12-2023123524.txt
|
Pobierz Plik ściągnięto 49 raz(y) 102 Bajtów |
|
|
![](../templates/xandgreen/images/topic_move.gif) | ID posta:
432014
|
|
|
![](../templates/xandgreen/images/spacer.gif) |
|
|
Tajan
![Junior Admin](../templates/xandgreen/images/ranks/junior admin1.gif)
Pomógł: 5573 razy Posty: 12088
|
Wysłany: 08-12-2023, 12:56
|
|
|
No, nie wiem... U mnie działa normalnie. Masz polską wersję Excela i Windowsa?
UTF8_txt.jpg
|
![](../files/thumbs/t_utf8_txt_854.jpg) |
Plik ściągnięto 16 raz(y) 21.63 KB |
Sheet408-12-2023124922.txt
|
Pobierz Plik ściągnięto 53 raz(y) 150 Bajtów |
|
|
![](../templates/xandgreen/images/topic_move.gif) | ID posta:
432015
|
|
|
![](../templates/xandgreen/images/spacer.gif) |
|
|
wiorek
Exceloholic
![Exceloholic](../templates/xandgreen/images/ranks/ranks_light4.gif)
Posty: 132
|
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
|
![](../files/thumbs/t_txt_752.png) |
Plik ściągnięto 12 raz(y) 13.89 KB |
|
|
![](../templates/xandgreen/images/topic_move.gif) | ID posta:
432020
|
|
|
![](../templates/xandgreen/images/spacer.gif) |
|
|
Tajan
![Junior Admin](../templates/xandgreen/images/ranks/junior admin1.gif)
Pomógł: 5573 razy Posty: 12088
|
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ę: postaraj się sprawdzić z jaką stroną kodową został zapisany plik "TMPFILE.TXT" i odpowiednio dostosuj "Charset" streama "ts1". |
|
![](../templates/xandgreen/images/topic_move.gif) | ID posta:
432024
|
|
|
![](../templates/xandgreen/images/spacer.gif) |
|
|
|
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
|
|
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
|