EXCEL2010 FileSearch的问题,求高手指点

songyingjian2008 2013-11-07 09:51:10
就是读取文件夹里的EXCEL文件内容,赋值到运行VBA的的EXCEL文件里。
下面是代码,本人不是太懂代码,上网查了一下,EXCEL2010不让用Application.FileSearch,
那么怎么才能把Application.FileSearch代替掉啊。求高手指点,越详细越好,本人是菜鸟。
谢谢了!!!

Private Sub CommandButton1_Click()
Dim fileName As String
Dim kenSaKuFlg As String
Dim strKey As String
Dim oFileSearch As Object
Dim w_strTemp As String
Dim book As String
Dim rowNum As Integer
Dim sFileAllName As String
Dim sName() As String
Dim maxRowNum As Integer
Dim sFilePath As String
Dim sNum As String
Dim bug As String
Dim NewXlApp As Excel.Application
Dim num As Integer

sFilePath = Trim(TextBox1.Text)

Set oFileSearch = Application.FileSearch

If sFilePath = "" Then
MsgBox "検索フォルダを入力してください。"
Exit Sub
End If

With oFileSearch
.NewSearch
.FileType = msoFileTypeAllFiles '全て類型のファイル。
.LookIn = sFilePath 'ファイルタを指定する。
.fileName = "*.xls" 'ファイルを指定する。
.SearchSubFolders = False
.Execute
'ファイルを存在する。
For i = 1 To .FoundFiles.Count
num = 0
Set NewXlApp = New Excel.Application
sFileAllName = .FoundFiles(i)
sName = Split(.FoundFiles(i), "\")
sFileName = sName(UBound(sName))
NewXlApp.Workbooks.Open sFileAllName

sNum = NewXlApp.Sheets(1).Range("K6").Value
bug = NewXlApp.Sheets(1).Range("O18").Value
a1 = NewXlApp.Sheets(1).Range("O19").Value
a2 = NewXlApp.Sheets(1).Range("N27").Value

NewXlApp.Quit
Set NewXlApp = Nothing

Cells(i + 1, 8) = sFileName
Cells(i + 1, 9) = sNum
Cells(i + 1, 10) = bug
Cells(i + 1, 11) = a1
Cells(i + 1, 12) = a2

Next

End With

MsgBox "処理が終了します、確認してください。"

End Sub
...全文
568 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
MMICE 2013-11-17
  • 打赏
  • 举报
回复
学习了
  • 打赏
  • 举报
回复
如果你可以搜到filesearch弃用,那应该可以看到可以用application.findfile方法替代。 其实两个功能是一样的,都是打开指定的文件,并返回给一个application变量。
舉杯邀明月 2013-11-07
  • 打赏
  • 举报
回复
Office 2007 也不支持这个。 不过,看到你用到了 .SearchSubFolders = False ,那就很好办了。 不用搜索子目录,很好处理。可以写一个很简单的函数,来替代它。
Private Function SearchFiles(sPath As String, sFileName As String) As String()
    Dim aList() As String
    Dim sTemp   As String
    Dim i&, k&, U As Long

    If (Right$(sPath, 1) = "\") Then
        sTemp = sPath & sFileName
    Else
        sTemp = sPath & "\" & sFileName
    End If
    k = -1:    U = 31
    ReDim aList(U)
    sTemp = Dir$(sTemp, 7&)
    Do
        If (Len(sTemp) = 0) Then Exit Do
        k = k + 1
        If (k > U) Then
            U = U + 8
            ReDim Preserve aList(U)
        End If
        aList(k) = sTemp
        sTemp = Dir$()
    Loop
    If (k >= 0) Then ReDim Preserve aList(k)
    SearchFiles = aList
End Function
' 应用示例:
Private Sub test()
    Dim aFiles() As String
    Dim i&
    ' 搜索 “D:\文档” 中的所有 .xls 文件:
    aFiles = SearchFiles("D:\文档", "*.xls")
    For i = 0 To UBound(aFiles)
        Debug.Print i, aFiles(i)
    Next
End Sub
一如既往哈 2013-11-07
  • 打赏
  • 举报
回复
看来偶out啦......... 我的电脑还是2003+2007

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧