返回列表 上一主題 發帖

[發問] 檔案操作疑問請教

[發問] 檔案操作疑問請教

在操作檔案時一直重覆在第一個csv檔操作

無法跳到下一個csv檔案

請問高手下面的程序到底哪裡出了問題

怎麼好像鬼打牆一直在原地繞 謝謝

Sub Test()

On Error Resume Next

Application.DisplayAlerts = False

bPath = ThisWorkbook.Path

If Right(bPath, 1) <> "\" Then dirpath = bPath & "\"

csvName = Dir(dirpath & "*.csv")

Do While Len(csvName) > 0

    MsgBox csvName
   
    Workbooks.Open (dirpath & csvName)
    '
    'balabalabala
    '
    '
    ActiveWorkbook.Close savechanges:=False
            
    csvName = Dir
   
Loop

End Sub

回復 2# Hsieh
On Error Resume Next 已mark掉
csvName = Dir(dirpath & "*.csv")  中的&已加上
偵錯是出現在  csvName=dir   這一行
怎麼辦呢

TOP

本帖最後由 huang40 於 2010-9-6 11:30 編輯

回復 4# Hsieh


這樣是執行OK

但一旦加入中間balabalabala的處理程序

  Workbooks.Open (dirPath & csvName)
    '
    'balabalabala
    '
    '
    ActiveWorkbook.Close savechanges:=False

csvName=dir 這行就還是出現錯誤訊息

有可能因為中間處理的程序碼出問題導致嗎?

TOP

本帖最後由 huang40 於 2010-9-6 20:06 編輯

試過還是卡在csvName=dir這裡

沒法可想只好用最笨的方法

先把檔名列出再一個一個開啟 終於搞定

可是對為什麼會卡在 csvName=dir 還是不瞭

總有個理由吧

Sub Test()
Application.DisplayAlerts = False
Sheets("MK").Activate
Columns("V").Clear
bPath = ThisWorkbook.Path
dirPath = ThisWorkbook.Path & "\"
csvName = Dir(dirPath & "*.csv")
n = 0
Do While csvName <> ""
    n = n + 1  
    Cells(n, 22) = csvName               
    csvName = Dir   
Loop
MsgBox n
For i = 1 To n
csvfile = Sheets(1).Cells(i, 22)
Workbooks.Open (dirPath & csvfile)    '
    '
    'balabalabala
    '
ActiveWorkbook.Close savechanges:=False
next i

TOP

本帖最後由 huang40 於 2010-9-7 11:39 編輯

其實問題很單純(或者我自以為很單純)

在TEST1不能執行的主程式去卻在TEST2可以執行

那問題會是出在哪呢

Sub Test1()
Application.DisplayAlerts = False
dirPath = ThisWorkbook.Path & "\"
csvName = Dir(dirPath & "*.csv")
Do While csvName <> ""
    Workbooks.Open (dirPath & csvName)
    '
    '(主程式)
    '
    ActiveWorkbook.Close savechanges:=False            
    csvName = Dir
Loop

Sub Test2()
Application.DisplayAlerts = False
Sheets(1).Activate
Columns("V").Clear
dirPath = ThisWorkbook.Path & "\"
csvName = Dir(dirPath & "*.csv")
n = 0
Do While csvName <> ""
    n = n + 1  
    Cells(n, 22) = csvName               
    csvName = Dir   
Loop
MsgBox "檔案數=" & n
For i = 1 To n
csvfile = Sheets(1).Cells(i, 22)
Workbooks.Open (dirPath & csvfile)   
    '
    '(主程式)
    '
ActiveWorkbook.Close savechanges:=False
next i
End Sub

TOP

回復 11# luhpro


原來還有區域變數的因素

雖然我的問題已經解決

但再試試到底是哪個變數出問題

再來提問 謝謝各位的回答

TOP

        靜思自在 : 稻穗結得越飽滿,越會往下垂,一個人越有成就,就要越有謙沖的胸襟。
返回列表 上一主題