• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

TXT Dosyası UTF-8 ve Üzerine Yazma

  • Konbuyu başlatan Konbuyu başlatan askm
  • Başlangıç tarihi Başlangıç tarihi

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,746
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
 
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

.
 
Ü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.
 
@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ş.

.
 
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:
İlginiz için çok teşekkür ederim. Deneyeceğim hemen.
 
Ö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.

.
 
Geri
Üst