首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >excel vba宏读取文本文件,一行位于单独的单元格中。

excel vba宏读取文本文件,一行位于单独的单元格中。
EN

Stack Overflow用户
提问于 2016-06-18 10:39:07
回答 2查看 3.1K关注 0票数 0

文本文件如下所示

a,John,"2014-2",

d,Will,"2016-7“,

我想把元素a放在第1行,放在第1行,John放在第2行中,d放在单元格第2行,第1组等等。请帮助。谢谢。下面是我的代码

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2016-06-18 11:08:57

可以使用Split,作为分隔符拆分每一行。

试一试,效果很好:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2016-06-18 11:30:37

您可以使用QueryTables属性,在一个步骤中导入和解析行。最简单的方法是使用宏记录器(使用Excel菜单中的Data ► Get External Data ► From Text选项)来完成这一任务,然后根据需要进行调整。在Excel中,这将打开文本导入向导,但您也可以在VBA中这样做。下面是我浏览该文件的一个示例,但是您可以像在原始宏中一样轻松地对其进行硬编码。还请注意,我已经显式声明了工作簿和工作表;如果您愿意,可以轻松地更改它。

为澄清而添加的编辑小调整

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37896036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档