目前有須求為 抓特定文字檔(*.txt) 中的特定文字至目前excel的欄位中
經過google大法 找到下方vba語法
但將1.txt及excel檔放在檔一個目錄下
執行巨集卻都說 找不到1.txt
請問是否那裡出錯了?
(大概2個月前有用過一次是ok的…)
Sub x()
For i = 1 To 1
Filename = i & ".txt"
If i < 10 Then Filename = "0" & Filename<br>txtfile = ThisWorkbook.Path & "\" & Filename
If Dir(Filename) = "" Then
MsgBox Filename & " does not exist"
GoTo nextfile
End If
Open txtfile For Input As #1
R = 0
Do While Not EOF(1)
Line Input #1, Line
Do While InStr(Line, " 台北:")
xPos = InStr(Line, " 台北:")
R = R + 1
Cells(R, i) = Mid(Line, xPos - 11, 11)
Line = Mid(Line, xPos + 1, Len(Line) - xPos + 1)
Loop
Loop
Close (1)
nextfile:
Next i
End Sub
For i = 1 To 1
Filename = i & ".txt"
If i < 10 Then Filename = "0" & Filename
txtfile = ThisWorkbook.Path & "\" & Filename
If Dir(Filename) = "" Then
MsgBox Filename & " does not exist"
GoTo nextfile
End If
紅字地方錯了...
另外前面的for迴圈沒啥意義...
除非你要依序填入...
要不然直接寫檔名就好...
還有你要匯入的檔名應該是01.txt吧...
1.txt不對...
後面的程式部份我沒看...
希望你自己嘗試修正一下...
txtfile = ThisWorkbook.Path & "\" & Filename
這句是把目前excel檔的路徑傳回並且加上Filename這個變數(01.txt)...
假設你放在c:下...
那txtfile就是c:\01.txt...
然後你下面的判斷式...
If Dir(Filename) = "" Then
Dir()這個函數會判斷你指定給他的路徑有沒有這個檔案存在...
Dir(Filename)換成值就是Dir("01.txt")...
不是合乎規則的路徑...那當然傳回的是0...
所以就會跑出找不到檔案了...
要修改的話就是傳入正確的路徑...
所以正確的解答是Dir(txtfile)...
另外這是個連續讀入指定檔名的程式...
如果只需要讀取一個檔案的話...
那其實直接指定路徑就好...
所以我會改成像下面的東西...
Sub x()
txtfile = ThisWorkbook.Path & "\01.txt"
If Dir(txtfile) = "" Then
MsgBox "file does not exist"
Else
Open txtfile For Input As #1
R = 0
Do While Not EOF(1)
Line Input #1, Line
Do While InStr(Line, " 台北:")
xPos = InStr(Line, " 台北:")
R = R + 1
Cells(R, 1) = Mid(Line, xPos - 11, 11)
Line = Mid(Line, xPos + 1, Len(Line) - xPos + 1)
Loop
Loop
Close (1)
End If
End Sub
---
修改後正確的程式碼...
For i = 1 To 1
Filename = i & ".txt"
If i < 10 Then Filename = "0" & Filename
txtfile = ThisWorkbook.Path & "\" & Filename
If Dir(txtfile) = "" Then
MsgBox Filename & " does not exist"
GoTo nextfile
End If
Open txtfile For Input As #1
R = 0
Do While Not EOF(1)
Line Input #1, Line
Do While InStr(Line, " 台北:")
xPos = InStr(Line, " 台北:")
R = R + 1
Cells(R, i) = Mid(Line, xPos - 11, 11)
Line = Mid(Line, xPos + 1, Len(Line) - xPos + 1)
Loop
Loop
Close (1)
nextfile:
Next i
End Sub
---
只修正Filename的部份就行了...
看來是改的時候有動到其他的部份沒抓到...
PS.上面的程式碼我也改過了...現在應該都可以執行...
內文搜尋

X