文本文件如下所示
a,John,"2014-2",
d,Will,"2016-7“,
我想把元素a放在第1行,放在第1行,John放在第2行中,d放在单元格第2行,第1组等等。请帮助。谢谢。下面是我的代码
Sub Importdata()
Open "C:\Users\apple\desktop\12345.txt" For Input As #1
r = 0
Do Until EOF(1)
Line Input #1, Data
ActiveCell.Offset(r, 0) = Data
r = r + 1
Loop
Close #1
End Sub发布于 2016-06-18 11:08:57
可以使用Split和,作为分隔符拆分每一行。
试一试,效果很好:
Option Explicit
Sub Importdata()
Dim cet
Dim r As Long
Dim Data
Dim wk AS worksheet
Set wk = sheet1
Open "C:\Users\apple\desktop\12345.txt" For Input As #1
r = 1
Do Until EOF(1)
Line Input #1, Data
cet = Split(Data, ",")
if len(join(cet)) > 0 then
wk.Cells(r, 1) = cet(0)
wk.Cells(r, 2) = cet(1)
ENd if
r = r + 1
Loop
Close #1
End Sub发布于 2016-06-18 11:30:37
您可以使用QueryTables属性,在一个步骤中导入和解析行。最简单的方法是使用宏记录器(使用Excel菜单中的Data ► Get External Data ► From Text选项)来完成这一任务,然后根据需要进行调整。在Excel中,这将打开文本导入向导,但您也可以在VBA中这样做。下面是我浏览该文件的一个示例,但是您可以像在原始宏中一样轻松地对其进行硬编码。还请注意,我已经显式声明了工作簿和工作表;如果您愿意,可以轻松地更改它。
为澄清而添加的编辑小调整
Option Explicit
Sub ImportData()
Dim sMyFile As Variant
Dim WS As Worksheet, WB As Workbook
Set WB = ThisWorkbook
Set WS = WB.Worksheets("sheet1")
sMyFile = Application.GetOpenFilename("Text Files(*.txt), *.txt")
If sMyFile <> False Then
With WS.QueryTables.Add(Connection:= _
"TEXT;" & sMyFile, _
Destination:=WS.Range("$A$1"))
.Name = "TestText"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End If
End Subhttps://stackoverflow.com/questions/37896036
复制相似问题