EXCEL VBA問題!

目前有須求為 抓特定文字檔(*.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
2011-12-27 12:38 發佈
文章關鍵字 Excel VBA 問題
Sub x()

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不對...

後面的程式部份我沒看...
謝謝你

紅色的地方跟我貼上的看起來是一樣的耶

將你的程式碼貼上後,依舊顯示01.txt不存在

原本抓來的程式碼是1 to 10 我自己改成 1 to 1的 ~呵





當然一樣...我是故意沒把正確答案改出來給你...
希望你自己嘗試修正一下...

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
---
修改後正確的程式碼...
謝謝你的指導,不過執行後,excel裡並未出現任何字元= =!

likesela917 wrote:
謝謝你的指導,不過執...(恕刪)

後面匯入的部份我沒改動...完全是照你原來的...
所以那部份你要自己去抓問題...
Sub x()

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
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?