Excel VBA或函数从工作簿中提取工作簿名称和数据

时间:2010-10-07 16:57:57

标签: excel vba excel-vba excel-2007 excel-2003

有没有办法提取工作簿名称,但只提取其中的一部分。 任何版本的excel都不错,最好是2003年。

例如

"Help_TicketID123456788.xls"  
"Help_TicketID563565464.xls" 

...

那么我想提取ID numbers并将它们放在另一个工作簿中的主工作表的列中。

此外,我想从每个工作簿中的特定列(始终是相同的列)中提取一些数据,并将其放入主工作表中。

谢谢!

1 个答案:

答案 0 :(得分:0)

在主电子表格中,您可以编写一个VBA过程来循环遍历目录中的所有xls文件,从每个文件名中提取ID号,然后打开每个文件以提取其他数据。这应该让你开始:

Sub RunCodeOnAllXLSFiles()
Dim lCount As Long
Dim wbResults As Workbook
Dim wbCodeBook As Workbook

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False

On Error Resume Next
Set wbCodeBook = ThisWorkbook
    With Application.FileSearch
        .NewSearch
        'Change path to suit
        .LookIn = "C:\MyDocuments\TestResults"
        .FileType = msoFileTypeExcelWorkbooks
        'Optional filter with wildcard
        .Filename = "Help_TicketID*.xls"
            If .Execute > 0 Then 'Workbooks in folder
                For lCount = 1 To .FoundFiles.Count 'Loop through all
                    'Extract ticket #
                    '.FoundFiles(lCount) is the filename

                    'Open Workbook x and Set a Workbook variable to it
                    Set wbResults = Workbooks.Open(Filename:=.FoundFiles(lCount), UpdateLinks:=0)

                    'Read the data from wbResults and write to your master spreadsheet

                    wbResults.Close SaveChanges:=False
                Next lCount
            End If
    End With
On Error GoTo 0
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub

来源:http://www.ozgrid.com/VBA/loop-through.htm