Împărțirea unui fișier text (în tone

Funcția este concepută pentru a împărți un fișier text în mai multe fișiere mai mici - fiecare dintre acestea având un număr de linii specificat

Separatorul de linii (de obicei, un flux de linie - constanta vbNewLine) este specificat ca parametru al Delimiter $







Fișierele create au nume de fișier (1) .txt. numele fișierului (2) .txt și așa mai departe.

Dacă parametrul funcției DeleteSourceFile este setat la TRUE. - fișierul original este șters după partiție

Funcția returnează o colecție care conține căi către fișierele generate

La începutul fiecărui fișier creat, se adaugă linia de antet - prima linie din fișierul sursă

Un exemplu de utilizare a funcției SplitTextFile:

Codul funcției SplitTextFile:

Dmitry, această macrocomandă nu este proiectată pentru fișiere de dimensiune 117mb
(este pentru fișiere mici - până la 1-10 MB)
Pentru fișiere uriașe (ca dvs.) - ar trebui să se aplice absolut alte tehnologii de procesare (lectură line-by-line),
astfel încât totul a funcționat mai repede și memoria a fost suficientă pentru procesare.
Nu încercați să găsiți acest lucru pe site-ul meu - macrocomenzile mele "universale" nu sunt proiectate pentru fișiere de această dimensiune

Vă mulțumim pentru răspuns! Dar nu a ajutat. În fereastra debuggerului văd că simbolurile au apărut în txt. în loc de text, iar pe linia txt = Split (txt, Delimiter $, 2) (1) un indice de eroare din intervalul de zbor zboară. În măsura în care înțeleg - nu vede separatorul și nu poate rupe șirul în substringuri.








adăugați un alt parametru True:

aveți un fișier într-o codificare diferită (unicode) - un alt parametru TRUE doar pentru acest scop este destinat

Bine ai venit! Eu folosesc codul tău pentru a procesa fișiere. Dar când procesați următorul fișier în linia Set ts = fso.OpenTextFile (nume fișier, 1, True): txt = ts.ReadAll: ts.Close nu citește fișierul sursă. În txt, "" este trecut. Fișierul sursă este csv. Fișiere similare (și structura și tipul de date) procesate cu o duzină, a fost excelentă, dar aici este problema. Nu înțeleg motivul. Îmi poți spune? Singura diferență este că acest dosar prost este mai mult decât alții - 117mb

Mulțumesc, o să încerc. Ne pare rău că problema nu este pe subiect - nu înțelege ordinea de comunicare. Sunt aici pentru prima dată.

Marat, ce intrebare aveti la tema articolului?
Puneți o întrebare în forum pe Excel, - va fi prompt.
Aș folosi GetObject pentru a accesa fișierul dacă știu calea prin care fișierul este salvat.

Bună ziua Igor, problema este aceasta - două fișiere Exile sunt deschise, dar atât în ​​ferestrele mamă, este necesar să se transfere informații dintr-un alt fișier dintr-un fișier. O macro atașată la unul dintre fișiere nu vede cartea din cealaltă fereastră părinte. Cum îl mai pot vedea?

Galiya, în acest caz, există multe de schimbat în cod.
Este mai ușor să scrieți o macrocomandă de la zero.

Faceți o comandă pe site (dacă sunteți dispus să plătiți pentru ajutor),
sau contactați forumurile Excel (dacă doriți să fiți ajutat gratuit)

Mulțumesc, a ajutat foarte mult!
Spune-mi, te rog, puțin mai mult
Există un fișier Excel, are mai multe coloane. Este necesar, de exemplu, dacă valoarea din coloana A este mai mare decât 0, scrieți la primul fișier, dacă este mai mare de 5, la următorul, adică Nu specificăm numărul de linii din fișiere, dar determinăm din condiție. Cum să implementați acest lucru? După cum înțeleg, trebuie să schimbi locul ăsta
Dacă rc> = MaxRowsCount.
Pentru ceva de genul ăsta
Dacă celulele (i, "A")> 0 "0" atunci.
Iată cum să lucrați cu fișierele nu știu







Trimiteți-le prietenilor: