Excel VBA или функция для извлечения имени и данных книги из книги - PullRequest
1 голос
/ 07 октября 2010

Есть ли способ извлечь имя книги, но затем извлечь только его часть. Любая версия Excel предпочтительнее 2003 года.

Например

"Help_TicketID123456788.xls"  
"Help_TicketID563565464.xls" 

...

Итак, я бы хотел извлечь ID numbers и поместить их в столбец на мастер-листе в другой книге.

Кроме того, я хотел бы извлечь некоторые данные из определенных столбцов (всегда одни и те же столбцы) из каждой рабочей книги и поместить их в основной рабочий лист.

Спасибо !!

1 Ответ

0 голосов
/ 07 октября 2010

В вашей основной электронной таблице вы можете написать процедуру VBA, чтобы зациклить все файлы xls в каталоге, извлечь идентификационный номер из каждого имени файла, а затем открыть каждый файл для извлечения других данных. Это должно помочь вам начать:

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

...