2017-02-26 14 views
0

我有以下代碼,用於將文本從文本文件粘貼到我的工作表中。問題是它將所有內容都轉移到一行上!將文本文本從文本文件粘貼到工作表中,逐行寫入

例如,如果文本文件中讀取:

Opened by Joe Bloggs 24 Feb 2017 11:08:12 
Closed by Joe Bloggs 24 Feb 2017 11:23:12 

這都將粘貼到範圍(「A1」)爲:

Opened by Joe Bloggs 24 Feb 2017 11:08:12 Closed by Joe Bloggs 24 Feb 2017 11:23:12. 

我寧願它是由線貼線下列A,使得:

Range("A1").Value = Opened by Joe Bloggs 24 Feb 2017 11:08:12 
Range("A2").Value = Closed by Joe Bloggs 24 Feb 2017 11:23:12 

我的代碼

Private Sub CommandButton1_Click() 

Dim myFile As String, text As String, textline As String, Delimiter As String 

myFile = "J:\...\Group Jobslist V1.2. Log.Log" 

Open myFile For Input As #1 
Do Until EOF(1) 
    Line Input #1, textline 
    text = text & textline 
Loop 
Close #1 
Range("A1").Value = text 

End Sub 
+0

'文檔'設施有一些很好的例子來幫助你做到這一點。查看包含遞增變量的Do While循環 - 這就是您作爲第一步後的內容(http://stackoverflow.com/documentation/vba/1873/flow-control-structures#t=201702261159580372731)。 – Ambie

回答

1

您可以簡單地打印循環中的每一行。

Private Sub CommandButton1_Click() 

    Dim myFile As String, textline As String 
    myFile = "J:\...\Group Jobslist V1.2. Log.Log" 

    Dim i As Long 
    Open myFile For Input As #1 
    Do Until EOF(1) 
     i = i + 1 
     Line Input #1, textline 
     Range("A" & i).Value = textline 
    Loop 
    Close #1 

End Sub 

您也可以使用FileSystemObject而不是舊的代碼風格。

+0

感謝MacroMac,完美工作。 – pwm2017

+0

很高興幫助。你可以通過選中框來接受我的答案嗎? – MacroMarc

0

嘗試下面的代碼,你可以每行(從文本文件)保存到一個數組元素,後來才遍歷所有的數組元素和(逐行)打印出來在A列。

Option Explicit 

Private Sub CommandButton1_Click() 

Dim myFile As String, text As String, textline() As Variant, Delimiter As String 
Dim i As Long 

myFile = "J:\...\Group Jobslist V1.2. Log.Log" 
ReDim textline(1 To 1000) '<-- Init array to large size 

i = 1 
Open myFile For Input As #1 
Do Until EOF(1) 
    Line Input #1, textline(i) 
    text = text & textline(i) 
    i = i + 1 
Loop 
Close #1 

ReDim Preserve textline(1 To i - 1) '<-- resize array to number of lines 

' loop through all array elements and print each one in column A (new row) 
For i = 1 To UBound(textline) 
    Range("A" & i).Value = textline(i) 
Next i 

End Sub