2017-08-17 1 views
0

J'ai très peu d'expérience avec C (travaillant sur des psets à partir du cours CS50x) et je fais du codage AutoLISP au travail. Je travaille actuellement à l'installation de VB sur mon ordinateur mais je peux installer un autre IDE/langue si cela fonctionne mieux. Je suis ouvert à apprendre comment aborder ce problème. Fondamentalement, je reçois plus de 300 documents Excel qui ne sont pas formatés de façon pratique (ils sont beaux quand ils impriment mais inutile d'essayer d'examiner les données sur toutes les feuilles si je les combine tous en une seule feuille comme je l'ai vu avec un tutoriel).Extraire des données de cellules spécifiques de fichiers excel impraticables (300+) au fichier excel nouvellement formaté

Heureusement, ils ont tous le même format. J'essaie de comprendre comment extraire des données de cellules spécifiques qui sont cohérentes dans chaque fichier vers un nouveau fichier Excel.

Mon pseudo est à la recherche quelque chose comme ceci:

Locate the excel files 

Create new excel file 

    Iterate through the excel file list 

    Open nth Excel file 

    Read first set of specific cells and add to array 
    Write array to nth row in new excel file 
    Read second set of specific cells and add to array 
    Write array to nth row in new excel file 

    Close nth Excel File 

Close new excel file 

Tout conseils, astuces et conseils sont grandement appréciés. C'est la première fois que j'essaie de faire quelque chose comme ça.

+2

Votre question est trop vaste pour question unique/sujet-> site de réponse comme SO et sera probablement fermé. Prenez chaque tâche dans votre pseudo-code et recherchez-le/essayez de le coder. Puis posez une question spécifique sur chacune des parties que vous ne pouvez pas travailler. Comme la plupart des tâches difficiles dans la vie, la solution consiste à diviser en parties conquisables et ensuite assembler toute la solution. – TnTinMn

+0

Merci pour le conseil, je vais aborder de cette façon. –

+0

Vous n'avez pas besoin d'installer VB. Utilisez juste VBA. Votre question ne peut pas être résolue - vous devez être plus précis. Vous devez commencer par écrire un programme très simple dans VBA qui peut copier/coller des valeurs Excel. Vous commencez à le faire en enregistrant une macro, puis examinez le code dans la macro, puis faites un peu de googling –

Répondre

0

Il serait utile si j'en savais plus sur les données que vous essayez d'extraire. Vous pouvez exécuter cette sous dans un nouveau fichier Excel (testé dans Excel 2010) en utilisant VBA (peut-être mieux que de créer un nouveau fichier via une application vb.net):

Private Sub ExtractData() 
Dim objFSO As Object 
Dim objFolder As Object 
Dim objFile As Object 
Dim strPath As String 
Dim intLen As Integer 
Dim strName As String 
Dim strValue As String 
Dim wsSheet As Worksheet 
Dim wsFind As Worksheet 

On Error GoTo errExtract 

Set wsSheet = Worksheets("Sheet1") 'Set sheet you want to extract the data to 
Set objFSO = CreateObject("Scripting.FileSystemObject") 

strPath = "C:\Users\pcool\Desktop\FolderName" 'Set path of folder with excel files 
Set objFolder = objFSO.GetFolder(strPath) 'Get the folder object associated with the directory 
wsSheet.Cells(1, 1).Value = "Title of Data" 


For Each objFile In objFolder.Files 'Loop through the files in the folder 
    Workbooks.Open (strPath & "\" & objFile.Name) 

    Set wsFind = Worksheets("Sheet1") 'Name of sheet in excel file 

    strValue = wsFind.Range("B8").Value 'Grab specific cell value "B8" from file 
    wsSheet.Cells(wsSheet.UsedRange.Rows.Count + 1, 1).Value = strValue 'Put value in first available cell in new file 

    ActiveWorkbook.CheckCompatibility = False 'Skip compatibility check 

    intLen = Len(objFile.Name) - 5 'Remove .xlsx characters from name 
    strName = Left(objFile.Name, intLen) 

    Workbooks(strName).Close SaveChanges:=False 'Close excel file without saving 

Next 

ExtractExit: 'Exit and set objects to nothing 
Set objFolder = Nothing 
Set objFile = Nothing 
Set objFSO = Nothing 
Exit Sub 

errExtract: 'Error handler 
MsgBox (Err.Description) 
Resume ExtractExit 

End Sub