Zapis tablicy do pliku txt o wskazanym kodowaniu   strona główna:
A po co ten Excel ;-)
 
 
Omawiana metoda to: wykorzystanie obiektu ADODB.Stream a więc wykorzystanie ADO do utworzenia i zapisu pliku txt.   Stream Object (ADO)
  ADODB.Stream PROPERTIES
Sub TBL2TXT_ADO(vDane As Variant, _  
                strTXTFileFullName As String, _  
                strEncoding AS String)  
                          
    On Error GoTo TBL2TXT_ADO_Error  
 
    Dim objStream As Object 'ADODB.Stream  
    Const adTypeText = 2  
    Const adSaveCreateOverWrite = 2  
    Const adCRLF = -1  
 
    Dim tbl As Variant  
    Dim i As Long, j As Integer  
    Dim strLine As String  
    Const strSep As String = ","  
      
    tbl = vDane  
 
    Set objStream = VBA.CreateObject("ADODB.Stream")  
    With objStream  
        .Type = adTypeText  
        .LineSeparator = adCRLF  
        .Charset = strEncoding  
        .Open  
        For i = LBound(tbl, 1) To UBound(tbl, 1)  
            For j = LBound(tbl, 2) To UBound(tbl, 2)  
                strLine = strLine & tbl(i, j) & strSep  
            Next  
            strLine = Left(strLine, Len(strLine) - Len(strSep)) & vbCrLf  
            .WriteText strLine  
            strLine = vbNullString  
        Next  
        .SaveToFile Filename:=strTXTFileFullName, _  
                    Options:=adSaveCreateOverWrite  
        .Close  
    End With  
 
TBL2TXT_ADO_Exit:  
    On Error Resume Next  
    If Not objStream Is Nothing Then  
        objStream.Close  
        Set objStream = Nothing  
    End If  
Exit Sub  
 
TBL2TXT_ADO_Error:  
    MsgBox "Byk Nr - " & Err.Number & vbCrLf & vbCrLf & _  
            Err.Description, vbExclamation, "VBAProject - TBL2TXT_ADO"  
    Resume TBL2TXT_ADO_Exit  
 
End Sub  
 
Jeszcze tylko przykład użycia...  
 
Option Explicit  
 
Sub Start()  
    Dim strTXTFile As String  
    Dim xlWks As Excel.Worksheet, ostAD As Long  
      
    strTXTFile = ThisWorkbook.Path & "\temp.txt"  
      
    Set xlWks = ThisWorkbook.Worksheets("Arkusz1")  
    With xlWks  
        ostAD = Last(.Columns("A:D"))  
        If ostAD > 1 Then  
 
            TBL2TXT_ADO .Range("C1:D" & ostAD), strTXTFile, "UTF-8"   
              
            MsgBox "Już :-)" & String(2, vbCrLf) & strTXTFile, vbInformation  
        End If  
    End With  
      
    Set xlWks = Nothing  
End Sub  
 
Function Last(rng As Excel.Range) As Long  
' wg. Ron de Bruin, 20 Feb 2007  
' http://www.rondebruin.nl/last.htm  
    On Error Resume Next  
    Last = rng.Find(What:="*", _  
                    After:=rng.Cells(1), _  
                    Lookat:=xlPart, _  
                    LookIn:=xlFormulas, _  
                    SearchOrder:=xlByRows, _  
                    SearchDirection:=xlPrevious, _  
                    MatchCase:=False).Row  
    On Error GoTo 0  
End Function  
 
   Jakie kodowania można wykorzystywać?  
Kodowanie okresla się podając ciąg oznaczający nazwę tego kodowania. Listę możliwych ciągów można znaleść na stonach M$ --->   Charset Property (Possible Values)
Listę tych ciągów możeby również podejrzeć w rejestrze naszego Windows'a. Trzeba poszukać wartości podkluczy dla:  
HKEY_CLASSES_ROOT\MIME\Database\Charset
  Charset Property (ADO)