ВБА читање текстуалне датотеке (читање, рашчлањивање и увоз)

Овај водич ће показати како читати садржај из текстуалних датотека и залепити га у радне листове са ВБА.

Прочитајте садржај текстуалне датотеке на радном листу

Најједноставнији начин читања садржаја текстуалне датотеке је копирање у ћелију радног листа.

123456789101112 Суб ФСОПастеТектФилеЦонтент ()Затамните ФСО као нови ФилеСистемОбјецтПостави ФСО = ЦреатеОбјецт ("Сцриптинг.ФилеСистемОбјецт")Сет ФилеТоРеад = ФСО.ОпенТектФиле ("Ц: \ Тест \ ТестФиле.ткт", ФорРеадинг) 'додајте путању ваше текстуалне датотекеТектСтринг = ФилеТоРеад.РеадАллФилеТоРеад.ЦлосеТхисВоркбоок.Схеетс (1) .Ранге ("А1"). Валуе = ТектСтринг 'можете одредити радни лист и ћелију у коју ћете залепити садржај текстуалне датотекеЕнд Суб

Горњи код користи ФилеСистемОбјецт. Да бисте га користили, мораћете да поставите референцу на библиотеку времена извођења ВБ скрипте. За више информација погледајте овде.

Без коришћења ФилеСистемОбјецт -а, можете залепити садржај ваше текстуалне датотеке доњим кодом. Ако ваша текстуална датотека садржи сепаратор линија, биће залепљена ред по ред.

123456789101112 Суб ПастеТектФилеЦонтент ()Затамните вбЕкцел као радну свеску, вбТект као радну свескуЗатамните всЕкцел као радни листСет вбЕкцел = ТхисВоркбоок 'овде наведите у коју Екцел датотеку треба улепити садржај текстуалне датотекеСет всЕкцел = вбЕкцел.Схеетс (1) 'овде наведите који радни лист ћете користитиСет вбТект = Воркбоокс.Опен ("Ц: \ Тест \ ТестФиле.ткт") 'овде додајте путању ваше текстуалне датотекевбТект.Схеетс (1) .Целлс.Цопи всЕкцел.ЦеллсвбТект.Цлосе СавеЦхангес: = ФалсеЕнд Суб

Читајте садржај текстуалне датотеке ред по ред, колона по колона

Ваша текстуална датотека може имати неколико редова и неколико елемената наведених у редовима одвојених зарезима, тачком и зарезом, табулатором, размаком итд … Да бисте правилно прочитали и залепили садржај текстуалне датотеке, можда ће вам требати овај код испод:

1234567891011121314151617181920212223242526 Суб ПастеТектФилеЦонтентВитхСепараторс ()Дим СтрЛине Ас СтрингЗатамните ФСО као нови ФилеСистемОбјецтЗатамните ОПС као објекатДим СтрЛинеЕлементс Ас ВариантДим Индек Ас ЛонгДим и Ас ЛонгДим Делимитер као СтрингПостави ФСО = ЦреатеОбјецт ("Сцриптинг.ФилеСистемОбјецт")Подесите ТСО = ФСО.ОпенТектФиле ("Ц: \ Тест \ ТестФиле.ткт")Делимитер = "," 'граничник који се користи у вашој текстуалној датотециИндекс = 1Урадити Док ТСО.АтЕндОфСтреам = НетачноСтрЛине = ТСО.РеадЛинеСтрЛинеЕлементс = Сплит (СтрЛине, Делимитер)За и = ЛБоунд (СтрЛинеЕлементс) За УБоунд (СтрЛинеЕлементс)Ћелије (Индекс, и + 1). Вредност = СтрЛинеЕлементс (и) 'овај код ће почети да лепи садржај текстуалне датотеке из ћелије А1 (ћелија (1,1)) активног радног листаЗатим самИндекс = Индекс + 1ЛоопТСО.ЗатвориЕнд Суб

Раздвајач који се користи у вашој текстуалној датотеци може бити зарез („,“), зарез са размаком („,“), тачка -зарез („;“), тачка -зарез са размаком („;“), размак („„), картица (промените затим Делимитер = вбТаб) или у ретким случајевима било који други знак.

Читајте текстуалне датотеке у низовима

Ако морате да прочитате садржај ваше текстуалне датотеке у низ и налепите ред по ред, колону по колону у свој радни лист, биће вам потребан овај код испод:

12345678910111213141516171819202122232425262728293031323334 Суб РеадДелимитедТектФилеИнтоАрраи ()Дим Делимитер Ас СтрингЗатамни текстуалну датотеку као цео бројДим ФилеПатх Ас СтрингДим ФилеЦонтент Ас СтрингДим ЛинеАрраи () Ас СтрингДим ДатаАрраи () Ас СтрингДим ТемпАрраи () Ас СтрингДим рв Ас Лонг, цол Ас ЛонгДелимитер = вбТаб 'граничник који се користи у вашој текстуалној датотециФилеПатх = "Ц: \ Тест \ ТестФилеТаб.ткт"рв = 1ТектФиле = ФрееФилеОтворите ФилеПатх за унос као текстуалну датотекуФилеЦонтент = Унос (ЛОФ (ТектФиле), ТектФиле)Затворите текстуалну датотекуЛинеАрраи () = Сплит (ФилеЦонтент, вбНевЛине) 'промени вбНевЛине у вбЦрЛф или вбЛф у зависности од сепаратора линија који се користи у вашој текстуалној датотециЗа к = ЛБоунд (ЛинеАрраи) За УБоунд (ЛинеАрраи)Ако је Лен (Трим (ЛинеАрраи (к))) 0 ТадаТемпАрраи = Сплит (ЛинеАрраи (к), Делимитер)цол = УБоунд (ТемпАрраи)РеДим Пресерве ДатаАрраи (цол, рв)За и = ЛБоунд (ТемпАрраи) до УБоунд (ТемпАрраи)ДатаАрраи (и, рв) = ТемпАрраи (и)Ћелије (к + 1, и + 1). Вредност = ДатаАрраи (и, рв) 'овај код ће почети да лепи садржај текстуалне датотеке из ћелије А1 (ћелија (1,1)) активног радног листаСледеће иКрај Акорв = рв + 1Даље кЕнд Суб

Одвајачи редова у вашој текстуалној датотеци могу бити комбинација враћања носача и уноса линије (Цхр (13)+Цхр (10)) или унос линије (Цхр (10)). У складу с тим користите вбЦрЛф или вбЛф. Ако нисте сигурни, користите вбНевЛине за означавање сепаратора линија.

wave wave wave wave wave