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: 56627 Skopiuj do schowka Korespondencja seryjna z Accessa(brak polskich znaków)
Autor Wiadomość
sowa_222 
Stały bywalec Excelforum


Wersja: Win Office 2010
Posty: 269
Wysłany: 18-03-2017, 06:59   Korespondencja seryjna z Accessa(brak polskich znaków)

W Accessie mam formularz i podpięty moduł z załącznika. wysyłam do Worda i występuje brak polskich znaków np żółty przenosi się jako ¿ó³ty. Może ktoś spotkał się z takim problemem

brak polskich znaków.txt
Pobierz Plik ściągnięto 272 raz(y) 36.44 KB

ID posta: 318580 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 2940 razy
Posty: 9729
Wysłany: 18-03-2017, 07:46   

Prawdopodobnie masz problem z kodowaniem na UTF-8
http://www.excelforum.pl/viewtopic.php?t=38601

Artik
ID posta: 318588 Skopiuj do schowka
 
 
sowa_222 
Stały bywalec Excelforum


Wersja: Win Office 2010
Posty: 269
Wysłany: 18-03-2017, 08:32   

a jak otwieram dokument Worda to wyskakuje mi taki komunikat

konwersja pliku.jpg
Plik ściągnięto 31 raz(y) 39.48 KB

ID posta: 318594 Skopiuj do schowka
 
 
sowa_222 
Stały bywalec Excelforum


Wersja: Win Office 2010
Posty: 269
Wysłany: 19-03-2017, 11:54   

mam zewnętrzny program który zmienia kodowanie dokumentu Word na właściwe i są wtedy polskie znaki ,ale jak zrobić to z poziomu VBa
ID posta: 318711 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 2940 razy
Posty: 9729
Wysłany: 19-03-2017, 12:29   

Mówiłem UTF-8, ale być może chodzi o inną stronę kodową. Przedstawiony kod daje możliwość zastosowania innej niż UTF-8. Sprawdzałeś np. '"windows-1250" lub '"unicode"?

Artik
ID posta: 318715 Skopiuj do schowka
 
 
sowa_222 
Stały bywalec Excelforum


Wersja: Win Office 2010
Posty: 269
Wysłany: 19-03-2017, 12:31   

nie bo nie wiem jak to sprawdzić :)
ID posta: 318716 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 2940 razy
Posty: 9729
Wysłany: 19-03-2017, 13:28   

Czy jeśli wybierzesz "Windows(domyślnie)" przy konwersji pliku merge.888 (patrz na swój obrazek), to tekst zostaje właściwie przekonwertowany?

Artik
ID posta: 318719 Skopiuj do schowka
 
 
sowa_222 
Stały bywalec Excelforum


Wersja: Win Office 2010
Posty: 269
Wysłany: 19-03-2017, 13:43   

tak zostaje właściwie przekonwertowany jak wybiorę Windows(domyślnie) są polskie znaki i wszystkie ogonki, ale ja chciałbym żeby podczas zapisu automatycznie konwertował, żeby nie trzeba było tego robić przy otwieraniu pliku
ID posta: 318721 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 2940 razy
Posty: 9729
Wysłany: 19-03-2017, 14:57   

sowa_222 napisał/a:
ale ja chciałbym żeby podczas zapisu automatycznie konwertował
Domyślam się. To było pytanie kontrolne. :-)

Zmiany jakie należy dokonać:
1. Dodać w module nową funkcję:
Kod:
Function ConvertAndSaveToFile(ByVal charToEncode As String, _
                              ByVal filePath As String, _
                              Optional sCharset As String = "windows-1250") As Boolean
    '"windows-1250" '"unicode" '"utf-8" '"utf-16"

    Dim adodbStream As Object

    ConvertAndSaveToFile = False

    On Error GoTo End_ConvertAndSaveToFile
    Set adodbStream = CreateObject("ADODB.Stream")
    With adodbStream
        .Type = 2
        .Charset = sCharset
        .Open
        .WriteText charToEncode
        .SaveToFile filePath, 2
        .Close
    End With

    ConvertAndSaveToFile = True

End_ConvertAndSaveToFile:
    On Error GoTo 0

End Function

2. Zmienić fragment funkcji MergeAllWord
Kod:
   ' now open file...
   
   On Error GoTo exit1
   

   intFile = FreeFile()
   Open strOutFile For Output As intFile
   Print #intFile, strFields
   
   ' output all data
   Do While rstOutput.EOF = False
     
      strData = ""         ' one line of data for csv file
      For Each OneField In rstOutput.Fields
     
         If strData <> "" Then strData = strData & ","
         strData = strData & qu(rstOutput(OneField.Name))
     
      Next OneField
     
      Print #intFile, strData
     
      rstOutput.MoveNext
      clsRidesPBar.IncOne
   Loop
   
   Close intFile
na
Kod:
   ' now open file...
  Dim strTextToFile As String
 
  strTextToFile = strFields & vbNewLine
   
   ' output all data
   Do While rstOutput.EOF = False
     
      strData = ""         ' one line of data for csv file
      For Each OneField In rstOutput.Fields
     
         If strData <> "" Then strData = strData & ","
         strData = strData & qu(rstOutput(OneField.Name))
     
      Next OneField
       
      strTextToFile = strTextToFile & (strData & vbNewLine)
     
      rstOutput.MoveNext
      clsRidesPBar.IncOne
   Loop
 
  If ConvertAndSaveToFile(strTextToFile, strOutFile) = False Then GoTo exit1

3.Zmienić fragment funkcji MakeMergeAll:
Kod:
   ' now open file...
   
   On Error GoTo exit1
   intFile = FreeFile()
   Open strOutFile For Output As intFile
   Print #intFile, strFields
   
   ' output all data
   Do While rstOutput.EOF = False
     
      strData = ""         ' one line of data for csv file
      For Each OneField In rstOutput.Fields
     
         If strData <> "" Then strData = strData & ","
         strData = strData & qu(rstOutput(OneField.Name))
     
      Next OneField

      Print #intFile, strData
     
      rstOutput.MoveNext
      pBar.IncOne
   Loop
   
   Close intFile
na
Kod:
   ' now open file...
  Dim strTextToFile As String
 
  strTextToFile = strFields & vbNewLine
   
   ' output all data
   Do While rstOutput.EOF = False
     
      strData = ""         ' one line of data for csv file
      For Each OneField In rstOutput.Fields
     
         If strData <> "" Then strData = strData & ","
         strData = strData & qu(rstOutput(OneField.Name))
     
      Next OneField
       
      strTextToFile = strTextToFile & (strData & vbNewLine)
     
      rstOutput.MoveNext
      pBar.IncOne
   Loop
 
  If ConvertAndSaveToFile(strTextToFile, strOutFile) = False Then GoTo exit1

4. Zmienić fragment funkcji MakeMergeText:
Kod:
   ' now open file...
   
   On Error GoTo exit1
   intFile = FreeFile()
   Open strOutFile For Output As intFile
   Print #intFile, strFields
   Print #intFile, strData
   Close intFile
na
Kod:
   ' now open file...
  Dim strTextToFile As String
 
  strTextToFile = strFields & vbNewLine & strData
 
  If ConvertAndSaveToFile(strTextToFile, strOutFile) = False Then GoTo exit1

Nie wykluczam, że we wszystkich zmianach, stałą vbNewLine trzeba będzie zmienić na inną, np. vbCr, vbCrLf lub vbLf.

Artik
ID posta: 318730 Skopiuj do schowka
 
 
sowa_222 
Stały bywalec Excelforum


Wersja: Win Office 2010
Posty: 269
Wysłany: 20-03-2017, 17:02   

wypróbowałem wszystkie opcje pozmieniałem kod który podał Artik

i dodatkowo sprawdziłem dla każdej zmiennej
Cytat:
Nie wykluczam, że we wszystkich zmianach, stałą vbNewLine trzeba będzie zmienić na inną, np. vbCr, vbCrLf lub vbLf.

i dalej przy otwieraniu Worda pyta mnie czy wybrać kodowanie oczywiście po wyraniu Windows mam Polskie znaki
ID posta: 318851 Skopiuj do schowka
 
 
szuszana 
ExcelSpec


Pomogła: 170 razy
Posty: 600
Wysłany: 23-03-2017, 20:14   

sowa_222
Skoro i tak musisz otwierać Worda to może rozważysz wysyłanie tych danych do pliku Worda z tabelą i taki plik potraktujesz jako plik danych?
Bo rozumiem, że masz jakieś powody by nie użyć ADO?
ID posta: 319158 Skopiuj do schowka
 
 
sowa_222 
Stały bywalec Excelforum


Wersja: Win Office 2010
Posty: 269
Wysłany: 24-03-2017, 17:40   

dzięki tak zrobiłem
Cytat:
Skoro i tak musisz otwierać Worda to może rozważysz wysyłanie tych danych do pliku Worda z tabelą i taki plik potraktujesz jako plik danych?
ID posta: 319261 Skopiuj do schowka
 
 
sowa_222 
Stały bywalec Excelforum


Wersja: Win Office 2010
Posty: 269
Wysłany: 24-03-2017, 18:00   

szuszana widze że znasz sie na Accessie
wysyłam z formularza access do pola tekstowego worda
Kod:
.FormFields("fldCompanyName").Result = Me!CompanyName

w taki sposób ale problem jest z tekstem z formatowanym przenoszą się jako tekst html div color itd. jak to obejść
ID posta: 319263 Skopiuj do schowka
 
 
szuszana 
ExcelSpec


Pomogła: 170 razy
Posty: 600
Wysłany: 24-03-2017, 18:34   

Z kopii dokumentu Word usuń wszystko pozostawiając jedynie fragment zawierający to pole formularza i załącz.
ID posta: 319267 Skopiuj do schowka
 
 
sowa_222 
Stały bywalec Excelforum


Wersja: Win Office 2010
Posty: 269
Wysłany: 24-03-2017, 19:05   

daje załącznik worda

1.docx
Pobierz Plik ściągnięto 197 raz(y) 13.92 KB

ID posta: 319269 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.marketingNET.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