текстовый файл со следующим содержимым:Текстовые строки файла Заголовки столбцов в Excel
userId=10101
givenname=Mark
orclmaidenname=Visser
[email protected]
userID=10102
givenname=Jan
orclmaidenname=Klaassen
userID=10104
givenname=Jessica
orclmaidenname=Host
[email protected]
И так далее.
Как преобразовать этот файл txt в рабочий лист excel, где заголовки строк из текстового файла будут заголовками столбцов, а строки из листа excel заполнены соответствующими значениями из текстового файла?
В файле txt содержится более 1000 элементов, но не все элементы имеют одинаковые заголовки строк (например, некоторые из них не имеют «почты»).
Это то, что у меня есть до сих пор. Он правильно нажимает «uid», «givenname», «orclmaidenname». Однако добавление «почты» приводит к неожиданному результату. Я думаю, потому что не все элементы содержат строку заголовка «почта».
Sub Frank()
Application.ScreenUpdating = False
' Name current file
MyMacroFile = ActiveWorkbook.Name
' Prompt for file
MyFile = Application.GetOpenFilename("All Files,*.*")
If MyFile = False Then
Exit Sub
End If
' Open file
Workbooks.OpenText Filename:=MyFile, Origin:=xlWindows, StartRow:=1, _
DataType:=xlFixedWidth, FieldInfo:=Array(0, 2)
' Name text file
MyTextFile = ActiveWorkbook.Name
' Find cell with "uid", "givenname", "orclmaidenname"
Do
Windows(MyTextFile).Activate
' Exit loop if can't find any matches
On Error GoTo Err_Fix
Cells.Find(What:="uid=", After:=ActiveCell, LookIn _
:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:= _
xlNext, MatchCase:=False).Activate
Cells.Find(What:="givenname=", After:=ActiveCell, LookIn _
:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:= _
xlNext, MatchCase:=False).Activate
Cells.Find(What:="orclmaidenname=", After:=ActiveCell, LookIn _
:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:= _
xlNext, MatchCase:=False).Activate
On Error GoTo 0
' Exit loop if starting search over form top
If ActiveCell.Row <= MyRow Then
Exit Do
End If
' Get specific characters of selected rows
MyValue = Right(ActiveCell.Value, 6)
MyValue2 = Right(ActiveCell.Value, Len(ActiveCell.Value) - 10)
MyValue3 = Right(ActiveCell.Value, Len(ActiveCell.Value) - 15)
MyRow = ActiveCell.Row
' Paste value in spreadsheet with macro in columns A, B and C
Windows(MyMacroFile).Activate
Range("A65536").End(xlUp).Offset(1, 0) = MyValue
Range("B65536").End(xlUp).Offset(1, 0) = MyValue2
Range("C65536").End(xlUp).Offset(1, 0) = MyValue3
Loop
Err_Fix:
Windows(MyTextFile).Activate
ActiveWorkbook.Close
Application.ScreenUpdating = True
Exit Sub
End Sub
Любое понимание?
Каков был этот «неожиданный результат»? –
В основном, он смешивал всю таблицу вверх. Столбцы содержали значения из разных строк, которые не соответствовали оригиналу. – Grote
Действительно ли это работает? Похоже, что он просто выбирает ячейку с 'orclmaidenname =', а затем заполняет ваш другой рабочий лист части своей стоимости. –