Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] VBA wczytanie pliku tekstowego do EXCELA wraz ze wszystkimi znakami

NEOKATRINA 27 Mar 2018 16:53 2070 10
  • #1
    NEOKATRINA
    Level 6  
    Witam,
    Chcialabym wczytac plik zródłowy wraz ze wszystkimi znakami jakie tam wystepuja. Spacjami i tabulatorami itd. [
    Gdyz tylko te wiersze ktore maja 120 znaków dlugosci wraz ze spacjami mozna jakos potem rodzielić na kolumny, zeby plik byl czytelny.

    Wczytywanie pliku przez zastosowanie wczytanie jak poniizej "gubi" znaki spacje.

    W zalaczeniu plik zródlowy. dane_przy..ad.txt Download (920 bytes)

    KOD VBA:
    Sub read_f()


    Dim myfile As String, textData As String, textRow As String, fileNo As Integer, x As Double
    myfile = Application.GetOpenFilename() 'open any file
    fileNo = FreeFile 'Get first free file number

    textRow = 1
    Open myfile For Input As #fileNo
    Do While Not EOF(fileNo)
    Line Input #fileNo, textData
    Cells(textRow, 1) = textData
    textRow = textRow + 1
    Loop
    Close #fileNo
    End Sub
    [28-30.06.2022, targi] PowerUP EXPO 2022 - zasilanie w elektronice. Zarejestruj się za darmo
  • Helpful post
    #2
    czareqpl
    Level 31  
    To nie są spacje, tylko tabulacje.
    Zobacz czy funkcją streplace uda Ci się zamienić znak tabulacji na np 5-6 spacji.
  • #3
    lanzul
    Level 30  
    NEOKATRINA wrote:
    jakos potem rodzielić na kolumny, zeby plik byl czytelny

    Może po prostu najprostsza opcja, a potem tylko jakieś porządki:
    Code: vba
    Log in, to see the code
  • #4
    NEOKATRINA
    Level 6  
    Witam,
    Dziekuje za zainteresowanie tematem. Jednak rozwiazanie nie jest tym czego szukalam.
    Wiem jak wczytac plik zarowno przez czytanie lini Input Line jak i potem rozdzielic uzywajac split i lub text to columns lub nawet wczytac plik za pomoca QueryTablesAdd (jako dane z pliku) jednak wczystkie te opcje nie czytaja pliku zrodlowego "w calosci".

    Sama nie wiem jak ale czasem udaje sie przez kopiuj wklej wkleic do excela dane do jednej komorki, Dzieki temu dlugosc wiersza ktore mnie interesuje ma 130 znakow i mozna wyciagnac dane tylko dla tych wierszy. Ponizej zamieszczam plik z takim rozwiazaniem (to nie bylo moim pomyslem -ktos to kiedys opracowal) - tu nie ma macra tylko funkcje excela pod warunkiem ze" dobrze "wkleimy" dane.
    Sample -ex...signs.xlsx Download (22.41 kB)

    Czy ktos wie jak moge wczytac/wkleic dane do jednej komorki "ze wszystkimi znakami" i jak to uzyskac przez macro?
    Moje proby wczytania pliku przez macro niestety za kazdym razem "gubia" taby.

    Juz zrobilam prototyp macra.. ale to bardzo wg mnie naokolo i musialam skorzystac z 3 funkcji z interenetu by np. obciac niepotrzebne znaki (CleanTrim) i (ile wystapien) by sprawdzic kiedy wystepuje 2ga ,3 cia itd spacja np. oraz (ReplaceN) dla zamiany textu. I jeszcze nie jest to efekt ktorego chce.
    Gdybym umiala wczytac te wszystkie znaki....to moze by macro mogloby byc prostsze. :)
    VBA co..txt Download (13.21 kB)
  • #5
    JRV
    VBA, Excel specialist
    Dane
    30 ch
    Hot W
    - D
    - E
    ma byc w jednej kolumnie lub w dwoch?
    Plik w poscie #1 jest rzeczywiscie zródlowe dane?
  • #6
    NEOKATRINA
    Level 6  
    Witam,
    1.W poscie jest cześć danych.Nie moge pokazać wszystkich bo jest tam nazwa fimy itd.
    Dane generowane sa z systemu Oracle do pliku tekstowego ,wiec jest to czesc pliku jaki się tworzy.
    Czy to ma jasies znaczenie?

    2.Tak dane z pliku sa czescia nazwy srodka ,do kolumny zaczynajacej sie od daty.
  • Helpful post
    #7
    JRV
    VBA, Excel specialist
    JRV wrote:
    ma byc w jednej kolumnie lub w dwoch?

    NEOKATRINA wrote:
    Czy to ma jasies znaczenie?

    Np. '30' i 'ch' dzieli się Tab'em, oraz 'Ho't i 'W', - i D itp., nastepnie dane w arkuszu Excel
    jest przesunięte wewnątrz tabeli. Lanzul ma racje, Wczytac ten plik Excel'em, jeszcze lepej jak jest na komputerze klient lub run-time Oracle, wczytac to za pomocy kwerendy
  • #8
    lanzul
    Level 30  
    JRV wrote:
    jest przesunięte wewnątrz tabeli

    "Święte słowa" - jest rozjazd w pliku ".txt" (źle utworzony) jak JRV pisze, widok na zrzutce:
    VBA wczytanie pliku tekstowego do EXCELA wraz ze wszystkimi znakamiRozjaz..jpg Download (133.74 kB)
    Dodatkowo tak to się prezentuje w ".xls" w różnych układach:
    Rozjazd ..t.zip Download (6.57 kB)

    Ale nawet pomimo tego, można to "okiełznać" makrami rozdzielającymi tekst "na zaś" (ilość kombinacji nie trzymających schematu jest raczej ograniczona), nie trzeba wpychać wszystkiego do "jednej komórki".
    Przecież sama piszesz, że "jakos potem rodzielić na kolumny" ... ?
  • #9
    NEOKATRINA
    Level 6  
    Witam,
    Tak włąsnie sek w tym ze jest ten rozjad i trzeba go okiełznać.
    Przyklad z poprawionego txt jest super, na tym by mozna cos zdzialać.
    Wlasnie o takie cos mi chodzi. :)

    Pisałam ze jesli sie wczyta calosc z tabami do jednej komorki to widac ze jest znaków 130 i za pomocą formuł można powyławiać te o które chodzi. Jak w pliku Excela umieszczonym przeze mnie wcześniej. Jesli wczytam bez "tab" to długość znakow w wierszu jest różna i niestety nie można zastosować reguł "wyławiania" odpowiednich pól . Jak w przykładzie wspomnianego Excela w arkuszu 2.

    Ale ja sie nie upieram na wczytaniu wszystkiego do jednego pola, jesli to mozna zrobić makrem inaczej.
    Po prostu mialam zoptymalizowac robienie tego raportu przez automatycznie wczytanie danych z txt (po formuly w excelu juz ktos opracowal) i tu wlasnie utknelam gdyz mi nie chce macro wczytac wszystkich znakow :(

    Dodano po 5 [minuty]:

    JRV wrote:
    JRV wrote:
    ma byc w jednej kolumnie lub w dwoch?

    NEOKATRINA wrote:
    Czy to ma jasies znaczenie?

    Np. '30' i 'ch' dzieli się Tab'em, oraz 'Ho't i 'W', - i D itp., nastepnie dane w arkuszu Excel
    jest przesunięte wewnątrz tabeli. Lanzul ma racje, Wczytac ten plik Excel'em, jeszcze lepej jak jest na komputerze klient lub run-time Oracle, wczytac to za pomocy kwerendy


    Co to run-time Oracle? Ja nie mam dostepu do tych raportów ale moge spytac kolezanki,ktora je robi. Z tego co widzialam to po prostu w naszym systemie księgowym naciska guzik i wychodzi jej raport od razu w txt, albo w przegladarce i zapisuje jako txt.
  • Helpful post
    #10
    lanzul
    Level 30  
    Jeśli wasi informatycy-programiści odmówią pomocy w poprawieniu ".txt", to rzeczywiście trzeba będzie coś wymęczyć ...
    Na razie pytanie, czy da się wydzielić jakąś ograniczoną ilość "zestawów znaków" (tych a la: 30 Ch, Hot W, - D, - E, itd.), które mieszają szyki (poprzez rozdzielenie ich tabulatorami, miast odstępami) ?

    I jeszcze pytanie: czy zawsze jest tylko 11 kolumn w takim pliku, czy może być więcej/mniej ?
  • #11
    NEOKATRINA
    Level 6  
    Dziekuje wszystkim za informacje. Niestety dalej nie wiem jak wczytac plik z tabulacjami ale to moje skomplikowane co prawda macro dziala. Niestety nasz dzial informatyki nie odpowiada moze bo jest w Holandii albo jestemy na liscie malych priorytetow dla nich.Uwazam ze jak na ksiegowa to i tak sukces.
    Dziekuje