2016-09-30 31 views
0

我想在Excel VBA中編寫一些看起來很容易的東西,但最終讓我生氣了。使用Multiselect追加文本文件-VBA Excel

首先,我的蹩腳英語的藉口。這裏有個問題:

該程序的目標是使用multiselect函數在同一工作表中一個接一個地加載多個純文本文件。他們需要每個都低於另一個。我管理代碼逐個加載它們,但是我堅持使用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,感謝您的回覆。我試過你的代碼,但它並沒有將文本文件放在我需要的同一列中,並且仍然將每個文件放在不同的列中。然而,用你的代碼,每個文件都是先行文件下面的一行,但仍然在不同的列中。 – ElCodificadorWey

+0

你把我放在賽道上。我修改了代碼中的一行:「」Set destCell = destCell.Offset(1,0)「」爲我的代碼開始處使用的那個「」「設置destCell =工作表(」PEDREC「)單元格(Rows.Count ,「A」)。End(xlUp).Offset(1)「」現在它似乎工作。答案就在我鼻子的正前方。再次感謝你的幫助! – ElCodificadorWey