excel vbamacros读取文本文件,在单独的单元格中一行

文本文件如下所示

约翰,“2014-2”,…

D,Will,“2016-7”,…

我想把元素a放在第1行,第1列约翰在第1 行第2列第2列在第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 

你可以使用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 

您可以使用QueryTables属性,一步导入​​和parsing行。 最简单的方法是使用macroslogging器(使用Data ► Get External Data ► From Text Excel菜单中的Data ► Get External Data ► From Text选项),然后调整以适应。 在Excel中,这将启动文本导入向导,但您也可以在VBA中执行。 下面是我浏览文件的一个例子,但是你可以像原始的macros一样对它进行硬编码。 另外请注意,我已经明确地声明了工作簿和工作表。 如果你愿意,你可以很容易地改变这个。

编辑微调join澄清

 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 Sub