Я написал простой сценарий VBA, который открывает все файлы .xls в заданной папке и копирует и вставляет нужную информацию из этих файлов в новый буклет.Каждая строка в новом буклете связана с файлом из папки.Примерно так:
Column1, Column2, Column3
FileName1,ABC, XYZ
FileName2, DEF,TUV
Информация в столбце 3 имеет формат
"ArbitraryString1(Very_Important_Info)ArbitraryString2"
Поскольку я хотел, чтобы Column3 выглядел хорошо, я перебрал все строки и использовал
Range("C"&X).TextToColumns DataType:=xlDelimited, Other:=True _
OtherChar:="("
Columns("E:E").Insert Shift:=xlToRight *
Range("D"&X).TextToColumn DataType:=xlDelimited, Other:=True _
OtherChar:=")"
Range("C"&X).TextToColumns DataType:=xlDelimited, Other:=True _
OtherChar:="(" **
Columns("E:Z").Delete
Columns("C:C").Delete
В конце этого я получаю
Column1, Column2, Column3
FileName1,ABC, Very_Important_Info_1
FileName2, DEF,Very_Important_Info_2
* Это необходимо, поэтому, когда я вызываю TextToColumn во второй раз, я не получаю сообщение, спрашивающее меня, хочу ли я перезаписать то, что ужев этом столбце.
** По какой-либо причине после вызова OtherChar: = "(" в первый раз я вижу "(Very_Important_Info) ArbitraryString2" с левым параметром, все еще прикрепленным к информации, а не кчтобы это исчезло. Кто-нибудь знает, почему это может быть? Я не против вызова метода во второй раз, но без него мой столбец C выглядел бы как "(Very_Important_Info", и я не понимаю, почему он так получился.