2010-10-07 23 views
1

Existe-t-il un moyen d'extraire le nom du classeur, mais d'en extraire une partie seulement. Toute version d'Excel serait bien de préférence 2003.Excel VBA ou Fonction pour extraire le nom du classeur et les données du classeur

Par exemple

"Help_TicketID123456788.xls" 
"Help_TicketID563565464.xls" 

...

Alors je voudrais extraire le ID numbers et les mettre dans une colonne sur un maître feuille de calcul dans un autre classeur.

En outre, je voudrais extraire des données de colonnes spécifiques (Toujours les mêmes colonnes) de chaque classeur, et mettre cela dans la feuille de calcul principale aussi.

Merci!

Répondre

0

Dans votre feuille de calcul principale, vous pouvez écrire une procédure VBA pour boucler tous les fichiers xls dans un répertoire, extraire le numéro d'ID de chaque nom de fichier, puis ouvrir chaque fichier pour extraire les autres données. Cela devrait vous aider à démarrer:

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 

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