Kategorie szkoleń | Egzaminy | Kontakt
  • 3
  • 5
  • 1.3K

Witam.

Mam plik Excela, w którym w jednym z arkuszy (arkusz o nazwie "output") znajdują się pewne dane tekstowe. Dane te są codziennie generowane automatycznie za pomocą makra (dlatego ilość wierszy z danymi jest za każdym razem inna). Zakres danych zawsze zaczyna się od komórki A1.Dane znajdują się tylko w kolumnie pierwszej (A).

Do tej pory zawartość z arkusza "output" kopiowałem ręcznie do pliku input.txt, który znajduje się w katalogu:

"C:\Users\przemo\Desktop\04.TOOL_4\".

Oczywiście najpierw usuwałem zawartość z pliku txt.

Chciałbym jednak ten proces zautomatyzować za pomocą VBA. Ma ktoś jakiś pomysł jak to zrobić?

Na razie zrobiłem wyczyszczenie zawartości pliku txt:

Sub eksport_do_txt()
    Open "C:\Users\przemo\Desktop\04.TOOL_4\input.txt" For Output As #1: Close #1
End Sub

Ale z kopiowaniem mi nie wychodzi.

Przemo
  • Zapytał
  • @ Przemo | 18.12.2014
    • laureat
    • 59
    • 24
    • 71

Odpowiedzi (3)

  • 0

A może wystarczy coś takiego:

Sub ExportTXT()

    ActiveWorkbook.SaveAs _
        Filename:="C:\EX04\Export do txt.txt", _
        FileFormat:=xlText
End Sub
  • Odpowiedział
  • @ | 05.01.2015
  • TRENER ALTKOM AKADEMII
Komentarze
Chciałbym zaproponować dodanie daty do nazwy, wtedy nie trzeba opróżniać pliku.

Sub ExportTXT()
Dim dt,Filename As String
dt = Format(CStr(Now), "yyy_mm_dd_hh_mm")

ActiveWorkbook.SaveAs _
Filename:= "C:\EX04\Export do txt"&dt&".txt", _
FileFormat:=xlText

End Sub
Skomentował : @ Jacek_Kotowski ,16.01.2015
  • 60
  • 54
  • 94
  • 0

Można też zapisywać dane z Excela do pliku tekstowego wiersz po wierszu, przy użyciu poniższego kodu:

Sub DoTXT()
    Dim sciezka As String
    Dim nazwaPliku As String
    Dim rend As Integer
    Dim cend As Integer
    Dim r As Integer
    Dim c As Integer
    Dim wiersz As String
    Dim wartoscKomorki As String
    siezka = ActiveWorkbook.Path
    nazwaPliku = "Dane"
    ' Ścieżka z nazwą tworzonego pliku w formacie txt
    Open siezka & "\" & nazwaPliku & ".txt" For Output As #1
    ' Aktywacja zakładki z danymi do zapisania w txt
    Sheets(1).Select
    ' Odczytywanie zakresu danych
    rend = Cells(1, 1).End(xlDown).Row
    cend = Cells(1, 1).End(xlToRight).Column
    ' Zapis danych do pliku
    For r = 1 To rend
        wiersz = ""
        For c = 1 To cend
            wartoscKomorki = Cells(r, c).Value
            If wartoscKomorki = "" Then wartoscKomorki = "?"
            wiersz = wiersz & wartoscKomorki & ","
        Next
        wiersz = Left(wiersz, Len(wiersz) - 1)
        Print #1, wiersz
    Next
    Close #1
    Response = MsgBox("Twój plik został utworzony!", vbInformation, "BuildData")
End Sub

 

Karol_Pisarek
  • Odpowiedział
  • @ Karol_Pisarek | 03.01.2017
    • lider
    • 5
    • 1
    • 13
Komentarze
Uruchamiam makro na 2 przygotowanych kolumnach .
Makro usuwa mi ostatni znak z 2 kolumny niezależnie od ilości znaków.
Co jest tego przyczyną?
Jak zmodyfikować kod aby w utworzonym pliku txt makro nie usuwało ostatniego znaku?
Skomentował : @ Paweł_Dddd ,21.04.2021
  • 0
  • 0
  • 0
  • 0

Uruchamiam makro na 2 przygotowanych kolumnach  w przygotowanym arkuszu. Makro zapisuje plik txt ale usuwa mi ost znak z wartości 2 kolby, niezależnie od ilości znaków w komórce.Co jest tego przyczyną?Jak zmodyfikować kod aby w utworzonym pliku txt makro nie usuwało ostatniego znaku?

Paweł_Dddd
  • Odpowiedział
  • @ Paweł_Dddd | 21.04.2021
    • 0
    • 0
    • 0