【问题标题】:VBA Script to import text files into single excel spreadsheet将文本文件导入单个 Excel 电子表格的 VBA 脚本
【发布时间】:2018-07-10 09:57:42
【问题描述】:

我希望在电子表格上创建一个 VBA 按钮,以将所有文本文件导入该电子表格。

理想情况下,我希望将文件名写入第 1 列,将文本文件内容写入第 2 列。文本文件包含单行信息。

我有以下内容,但不知道如何获取旁边的文件名。

    Sub ReadFilesIntoActiveSheet()
    Dim fso As FileSystemObject
    Dim folder As folder
    Dim file As file
    Dim FileText As TextStream
    Dim TextLine As String
    Dim Items() As String
    Dim i As Long
    Dim cl As Range

    ' Get a FileSystem object
    Set fso = New FileSystemObject

    ' get the directory you want
    Set folder = fso.GetFolder("C:\DataExport")

    ' set the starting point to write the data to
    Set cl = ActiveSheet.Cells(2, 2)

    ' Loop thru all files in the folder
    For Each file In folder.Files
        ' Open the file
        Set FileText = file.OpenAsTextStream(ForReading)

        ' Read the file one line at a time
        Do While Not FileText.AtEndOfStream
            TextLine = FileText.ReadLine

            ' Parse the line into | delimited pieces
            Items = Split(TextLine, "|")

            ' Put data on one row in active sheet
            For i = 0 To UBound(Items)
                cl.Offset(0, i).Value = Items(i)
            Next

            ' Move to next row
            Set cl = cl.Offset(1, 0)
        Loop

        ' Clean up
        FileText.Close
    Next file

    Set FileText = Nothing
    Set file = Nothing
    Set folder = Nothing
    Set fso = Nothing

End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    哟,

    希望如你所愿:

    Sub ReadFilesIntoActiveSheet()
    
    Dim fso As FileSystemObject
    Dim folder As folder
    Dim file As file
    Dim FileText As TextStream
    Dim TextLine As String
    Dim Items() As String
    Dim i As Long
    Dim cl As Range
    
    ' Get a FileSystem object
    Set fso = New FileSystemObject
    
    ' get the directory you want
    Set folder = fso.GetFolder("C:\DataExport")
    
    ' set the starting point to write the data to
    Set cl = ActiveSheet.Cells(2, 1)
    
    ' Loop thru all files in the folder
    For Each file In folder.Files
        ' Write file-name
        cl.Value = file.Name
    
        ' Open the file
        Set FileText = file.OpenAsTextStream(ForReading)
    
        ' Read the file one line at a time
        Do While Not FileText.AtEndOfStream
            TextLine = FileText.ReadLine
    
            ' Parse the line into | delimited pieces
            Items = Split(TextLine, "|")
    
            ' Put data on one row in active sheet
            For i = 0 To UBound(Items)
                cl.Offset(0, 1 + i).Value = Items(i)
            Next
    
            ' Move to next row
            Set cl = cl.Offset(1, 0)
        Loop
    
        ' Clean up
        FileText.Close
    Next file
    
    Set FileText = Nothing
    Set file = Nothing
    Set folder = Nothing
    Set fso = Nothing
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2015-03-28
      • 2016-06-10
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      相关资源
      最近更新 更多