TXT Dosyası UTF-8 ve Üzerine Yazma

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Kolay gelsin.
TXT dosyasına veriş kaydetme konusunda utf-8 olarak kayıt için https://www.excel.web.tr/threads/vba-ile-txt-kaydetme-icine-utf-8-kodlama-eklemek.168921/ linkde Haluk Ustadın bir kodu mevcut. Bu kodu txt dosyasının altına ekleme şeklinde değiştirme imkanı var mı?

Kod
Kod:
Private Sub CommandButton24_Click()
    kayıt_yeri = ThisWorkbook.Path & "\YAZDIRILACAK.txt"
    If Dir(kayıt_yeri) <> "" Then Kill kayıt_yeri
    For i = 5 To Range("a65536").End(3).Row
        With Worksheets("sayfa2")
            evn = evn & .Cells(i, 1) & vbTab
            evn = evn & .Cells(i, 2) & vbTab
            evn = evn & .Cells(i, 3) & vbTab
            evn = evn & .Cells(i, 4) & vbTab
            evn = evn & .Cells(i, 5) & vbTab
            evn = evn & .Cells(i, 6) & vbTab & vbCrLf
        End With
    Next
    Set adoStream = CreateObject("ADODB.Stream")
    adoStream.Charset = "utf-8"
    adoStream.Type = 2
    adoStream.Open
    adoStream.WriteText evn
    adoStream.SaveToFile kayıt_yeri
End Sub
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Sayın askm;

Sanırım söz konusu text dosyasını "Append" modunda açıp, veri ilave etmek istiyorsunuz. Ancak, "ADODB.Stream" bunu desteklemez.

O zaman tek çare; diğer yöntemlerle text dosyasını "Append" modunda açıp, verileri dosyaya yazarken başka bir "function" (Kullanıcı Tanımlı Fonksiyon) yardımıyla UTF-8'e çevirerek yazacaksınız.

@Zeki Gürsoy bu konularda iyidir, kendisi belki söylediklerimde yanlış veya eksik birşey varsa düzeltir veya değişik birşeyler önerebilir

.
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Üstad ben de yerli ve yabancı sitelerde ADODB.Stream olarak arama yaptım ama bulamadım. Belirttiğiniz gibi desteklemediği için sanırım.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
@Haluk , ADODB.Stream nesnesinde Load metodu ile açılan dosyaya Position özelliği ile dosyanın sonuna ilaveler yapılabilir. Sanırım arkadaşımız bunu öğrenmek istemiş.

.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bu durumda, Zeki Gürsoyun önerisi aşağıdaki gibi kullanılabilir;

C#:
Sub Test()
'   ADO Stream - Append mode
'   Zeki Gürsoy - Haluk
'   11/02/2022
    Dim objStream As Object, myFile As String
    
    Const adTypeText As Long = 2
    Const adSaveCreateOverWrite As Long = 2
    Const adWriteLine As Long = 1
    Const adCRLF As Long = -1
    
    Set objStream = CreateObject("ADODB.Stream")
    objStream.Type = adTypeText
    objStream.Charset = "UTF-8"
    objStream.LineSeparator = adCRLF
    objStream.Open
    
    myFile = ThisWorkbook.Path & Application.PathSeparator & "TestFile.txt"
    
    If Dir(myFile) = "" Then
        MsgBox myFile & " bulunamadı, dosya yolunu kontrol edin"
        GoTo SafeExit:
    Else
        objStream.LoadFromFile myFile
    End If
    
    objStream.Position = objStream.Size ' Text dosyasinda en sona konumlandirmak icin
    objStream.WriteText "Test string - Haluk", adWriteLine
    objStream.SaveToFile myFile, adSaveCreateOverWrite
    
SafeExit:
    objStream.Close
    Set objStream = Nothing
End Sub

.
 
Son düzenleme:

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
İlginiz için çok teşekkür ederim. Deneyeceğim hemen.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Önceden "Constant" olarak deklare edilen "myFile", daha sağlıklı olması için 5 No'lu mesajdaki kodda bu kez değişken olarak revize edildi.

.
 
Üst