Board logo

標題: [發問] 在Excel 2003錄製的巨集,在Excel2007/2010卻發生執行錯誤'9' or '445' [打印本頁]

作者: waterful.tw    時間: 2012-4-27 14:39     標題: 在Excel 2003錄製的巨集,在Excel2007/2010卻發生執行錯誤'9' or '445'

以下是我在Excel 2003
  1. Sub Get_TEXT()

  2. Dim MyBook, LinkBook As Workbook, _
  3.     MySht, LinkSht, BaSht, WorkSht As Worksheet, _
  4.     MyPath, FindFile, FileCunt, x, Xm As Long, _
  5.     RngEnd As Range, uDate As Date

  6. Set FindFile = Application.FileSearch

  7. With FindFile
  8.     .LookIn = MyPath: .Filename = "*.csv"
  9.     .SearchSubFolders = False: .MatchTextExactly = True
  10.     .FileType = msoFileTypeAllFiles
  11.     FileCunt = .Execute()
  12. End With

  13. If FileCunt = 0 Then _
  14.    MsgBox "※找不到要匯入的文字檔!!! ", 0 + 48, ">>提示訊息": Exit Sub
  15. Application.ScreenUpdating = False

  16. '...
  17. End Sub
複製代碼
但在Excel 2007/2010卻發生執行錯誤,bug是出現在同一行
  1. Set FindFile = Application.FileSearch
複製代碼
不知道在Excel 2007/2010時,此行要如何修改?
作者: Hsieh    時間: 2012-4-27 16:43

回復 1# waterful.tw


    FileSearch
於2007版本以後已經不支援此物件
可使用Dir函數或是GetOpenFilename來取代
作者: waterful.tw    時間: 2012-4-30 14:48

請問Hsieh大大,若我將原先程式碼
  1. Set FindFile = Application.FileSearch
  2. With FindFile
  3.     .LookIn = MyPath: .Filename = "*.csv"
  4.     .SearchSubFolders = False: .MatchTextExactly = True
  5.     .FileType = msoFileTypeAllFiles
  6.     FileCunt = .Execute()
  7. End With
複製代碼
改為下列程式碼
  1. Set FindFile = Dir(MyPath & "*.csv")
  2. Do While FindFile <> ""
  3.     FileCunt = FileCunt + 1
  4.     FindFile = Dir
  5. Loop
複製代碼
在Dir函數設定的那行,卻發生"此處需要物件 (錯誤 424)"錯誤,請問我該如何修改?
PS.不太會用Dir函數的新手留
作者: Hsieh    時間: 2012-4-30 14:56

回復 3# waterful.tw
FindFile是字串不是物件不能使用SET陳述式
  1. FindFile = Dir(MyPath & "*.csv")
  2. Do While FindFile <> ""
  3.     FileCunt = FileCunt + 1
  4.     FindFile = Dir
  5. Loop
複製代碼

作者: waterful.tw    時間: 2012-4-30 15:36

感謝Hsieh大大,看來我後面有一大段程式要修改了,等有問題在上來發問囉~ ^^




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