Board logo

標題: [發問] Function語法想修改用在Excel2007版 [打印本頁]

作者: luke    時間: 2012-4-10 15:59     標題: Function語法想修改用在Excel2007版

H超版, 各位大大

小弟有個舊Excel2003檔案vba使用With Application.FileSearch無法用在Excel2007, 語法如下

煩請先進指導該如何修改才能使用於Excel2007版

Public Function FilesPathFind(FindPath, FindFileName, Data)
Dim ss As SearchScope
Dim sf As ScopeFolder
Dim lngCount As Long

With Application.FileSearch
    .NewSearch
    .Filename = FindFileName
    .LookIn = FindPath
    .SearchSubFolders = True
    .FileType = msoFileTypeBinders
   
    If .Execute <> 0 Then
        Data = 1

    Else
        Data = 0
    End If
End With

End Function
作者: Hsieh    時間: 2012-4-10 18:02

回復 1# luke

看不懂你這個函數的作用
若要計算檔案類型的數量,試試
  1. Public Function FilesPathFind(FindPath$, FindFileName$)
  2. Dim fs$
  3. fs = Dir(FindPath & FindFileName)
  4. Do Until fs = ""
  5.   FilesPathFind = FilesPathFind + 1
  6.   fs = Dir
  7. Loop
  8. End Function
複製代碼

作者: luke    時間: 2012-4-12 20:18

回復 2# Hsieh


    H超版

    先謝謝你的答覆

    這個功能函數是VB的用語, 也是小弟所提去搭配兩個資料夾匯入相同檔案名稱, 需匯入多達400個以上檔案,
    每次匯入兩個同檔名再做分類處理, DATA利用ComboBox呼叫, 內部使用大量暫時記憶體整理, 最後得到約1萬資料列

     測試後仍無法克服問題

     以上
作者: Hsieh    時間: 2012-4-12 22:42

回復 3# luke


    你的函數功能實在無法從程式碼中理解
整體程式運作不可能從片段且無法執行的程式去猜測你要的功能
以你的函數來看
FilesPathFind最後要傳回的是甚麼東西?
Data是引數,但你卻要在函數執行中變更,不知有何意義?
以你的函數程式碼解釋如下
在FindPath資料夾內搜尋名為FindFileName的文件夾檔案
如果找到就將Data改成1否則改成0
這樣的邏輯似乎是錯誤的
所以只能告訴你這是錯誤,並無法為你解決問題
作者: luke    時間: 2012-4-13 22:00

回復 4# Hsieh


    謝謝H大

    你的判斷是對的, 現程式已作如下修改後OK

    fs = Dir(FindPath & "\" & FindFileName)
    If fs = "" Then
    FData = 0
    Else
    Data = 1

    感謝協助




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)