【问题标题】:Append text files with Multiselect using Excel VBA使用 Excel VBA 使用多选附加文本文件
【发布时间】:2016-09-30 18:21:34
【问题描述】:

目标是使用多选功能在同一个工作表中一个接一个地加载多个纯文本文件。他们需要彼此低于对方。我管理代码以一一正确加载它们,但我坚持使用 MultiSelect 的东西。

代码确实附加了文件,但一个并排(假设是水平的)而不是我需要的垂直。这是我的代码:

Private Sub Prova_Multiselect_Click()
    Dim Fitxers As Variant
    Dim Msg As String
    Dim I As Integer
    Dim destCell As Range

    Set destCell = Worksheets("PEDREC").Cells(Rows.Count, "A").End(xlUp).Offset(1)

    Fitxers = Application.GetOpenFilename(MultiSelect:=True, Title:="Choose txt files", FileFilter:="Text files *.txt (*.txt),")

    If IsArray(Fitxers) Then

        Set destCell = Worksheets("PEDREC").Cells(Rows.Count, "A").End(xlUp).Offset(1) 

        Msg = "Files selected:" & vbNewLine

        For I = LBound(Fitxers) To UBound(Fitxers)

            With destCell.Parent.QueryTables.Add(Connection:="TEXT;" & Fitxers(I), Destination:=destCell)
                .TextFileStartRow = 1
                .TextFileParseType = xlDelimited
                .TextFileCommaDelimiter = True
                .Refresh BackgroundQuery:=False
            End With

            Msg = Msg & Fitxers(I) & vbNewLine

        Next I

        MsgBox Msg

    Else
        MsgBox "No file selected."
    End If
End Sub

我找不到将所有文件附加到同一列中的方法。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您在循环时根本没有推进 destCell,导致它永久卡在 A2 中。试试:

          For I = LBound(Fitxers) To UBound(Fitxers)
    
    
            With destCell.Parent.QueryTables.Add(Connection:="TEXT;" & Fitxers(I), Destination:=destCell)
                .TextFileStartRow = 1
                .TextFileParseType = xlDelimited
                .TextFileCommaDelimiter = True
                .Refresh BackgroundQuery:=False
            End With
    
            Msg = Msg & Fitxers(I) & vbNewLine
    
            Set destCell = destCell.Offset(1, 0)
    
    
          Next I
    

    【讨论】:

    • 您好 Werrf,感谢您的回复。我尝试了您的代码,但它没有将文本文件放在我需要的同一列中,并且仍然将每个文件放在不同的列中。然而,使用您的代码,每个文件都位于前一个文件下方的一行,但仍位于不同的列中。
    • 你让我走上了正轨。我修改了代码中的行: ""Set destCell = destCell.Offset(1, 0)"" 用于我的代码开头使用的行 ""Set destCell = Worksheets("PEDREC").Cells(Rows.Count , "A").End(xlUp).Offset(1)"" 现在它似乎工作了。答案就在我眼前。再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2016-08-13
    • 2014-05-09
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    相关资源
    最近更新 更多