【发布时间】:2021-05-06 17:59:00
【问题描述】:
非常感谢提前 我有一个 .txt 文件,其中包含需要提取并放入 Excel 中相应列的数据。我对 VBA 编码非常陌生,并且尝试了很多,但是很难完成这项工作......下面显示了我到目前为止的代码,但是在运行时,它的工作方式有所不同。实际上数据需要放在各自的字段中作为excel中的样本。在 Excel 文件中,我已经将数据保存为如何获取并填写在相应的标题列中。
类型;帐号:银行参考;受益人姓名;日期;金额;BENE 帐号;BENE IFSC;BENE 银行名称;参考;BENE 邮件 ID IMPS;45605104698;60062000057200;ABCDEF;12122016;0000000001.00;10304060176;STRK0002018;印度国家银行;5110845;abce@gmail.com;
我用于提取上述数据并将其放入各自列的代码如下:-
Option Explicit
Sub importTXT()
Dim r As Range, myfile As Variant
Dim qt As QueryTable, i As Integer
Dim del As Range
'where myfile needs to select manually
myfile = Application.GetOpenFilename("All Files (*.*), **.*", _
, "Select TXT file", , False)
If myfile = False Then Exit Sub
'elseif its fixed
'myfile = "D:\sample student file"
Application.ScreenUpdating = False
With ActiveSheet
.Range("E7").CurrentRegion.Cells.Clear
With .QueryTables.Add(Connection:="TEXT;" & myfile, Destination:=.Range("$E$7"))
.Name = "MST"
.TextFilePlatform = 437
.TextFileStartRow = 2
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileTabDelimiter = True
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
'delete query tables if found any.
For Each qt In ActiveSheet.QueryTables
qt.Delete
Next qt
'Delete the Data Connections
If .Parent.Connections.Count > 0 Then
For i = 1 To .Parent.Connections.Count
.Parent.Connections.Item(i).Delete
Next i
End If
For Each r In .Range("E7:X" & .UsedRange.Rows.Count)
If InStr(r, "Title = ") > 0 Then
r.Offset(, 1) = Mid(r.Value, InStr(r, " ") + 8, InStrRev(r.Value, " "))
r.Offset(, 2) = Mid(r.Value, InStrRev(r.Value, " ") + 2, Len(r.Value) - InStrRev(r.Value, " ") - 2)
Else
If del Is Nothing Then
Set del = r
Else
Set del = Union(del, r)
End If
End If
Next
End With
Application.ScreenUpdating = False
End Sub
需要插入数据的示例excel文件如下:-
【问题讨论】:
-
我必须承认我对你的问题不太了解......所以,你尝试使用
QueryTables.Add在 Excel 工作表中打开一个 txt 文件。内容是否按预期打开?如果是,我们是否应该理解列的顺序与必要的不同。这种理解正确吗?如果可以,能否提供一个txt文件列与Excel表格的对应表? txt文件是否有可能不是一直在同一个位置?如果不是,则请求的对应应按照列标题进行:txt - E、F、G、H 等; xls - G、H、E、F 等 -
我将在 10 到 15 分钟后离开我的办公室。如果您能尽快澄清上述问题,我可以提供一个解决方案,我认为...... E,F,G,H等可以表示为“E:AC”。无论如何,它应该是一个连续的列范围。
-
请edit 您的问题明确说明出了什么问题和/或具体是什么“不起作用”。如果您遇到任何错误,请包括消息并指出哪条指令正在爆炸。如果输出不符合预期,请说明实际输出与预期输出有何不同。
-
非常感谢 FaneDuru,为了更好地理解,我将与您分享文件。在那里你会完全了解
-
@FaneDuru,这是最后一次请看
标签: vba import excel-2010 export-to-excel vba7