2016-09-30 9 views
0

Excel VBAで非常に簡単に見えるコードを作成しようとしていますが、結局私は狂ってしまいます。Multiselect - VBA Excelでテキストファイルを追加します。

まずは、私の不自由な英語の言い訳です。ここで質問になる:

複数のプレーンテキストファイルを複数の同じワークシートに順次ロードするには、マルチセレクション機能を使用することが目的です。彼らはそれぞれが他のものの下にある必要があります。私はそれらを適切に1つずつロードするコードを管理しましたが、私は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 

私は試して検索しましたが、同じ列にすべてのファイルを追加する方法が見つかりませんでした。どんな助けやアイデアも大歓迎です! :D

ありがとうございます!

答えて

0

ループ中に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 
+0

こんにちはWerrf、あなたの返信をありがとう。あなたのコードを試しましたが、テキストファイルを必要なだけ同じ列に配置せず、各ファイルを別の列に配置します。しかし、あなたのコードでは、すべてのファイルは、先行するファイルの下の1行ですが、依然として異なる列にあります。 – ElCodificadorWey

+0

あなたは私をトラックに入れます。あなたのコードの行を修正しました: ""あなたのコードの先頭に使われているdestCell = destCell.Offset(1、0) ""を設定してください "" destCell = Worksheets( "PEDREC")を設定してください。 、 "A")。End(xlUp).Offset(1) ""そして今はうまくいくようです。答えは私の鼻の前にあった。あなたの助けをもう一度ありがとう! – ElCodificadorWey

関連する問題