stromba Creative Commons License 2011.04.25 0 0 14706

 

Például. Én szeretek csak annyi sort kimásolni az alapfájlból amennyiben értékes adat van (vizsgáljuk például azt hogy mi az utolsó sor), ez itt lent annyiban egyszerűbb hogy mindenképpen 200 sornyi adatot másol. Az "első munkalap" nem mindig az első munkalap ezért érdemes lenne inkább névre hivatkozni.

 

 

Sub CrDb()

Dim FSO As Scripting.FileSystemObject, folder As Scripting.folder, file As Scripting.file, wb As Workbook

'szükséges referencia a "Microsoft Scripting Runtime"-hoz. VBA-ban Tools - References alatt

Dim directory As String

Dim thisWB, tempWB As String

Dim dbSh As String

Dim i As Long

 

Application.ScreenUpdating = False 'képernyõfrissítés kikapcsolása

 

Workbooks.Add 'adatbázis új munkafüzetben, ezt majd lementheted MIND.xls néven v. akárhogy máshogy

thisWB = ActiveWorkbook.Name

dbSh = ActiveSheet.Name

i = 1

 

    directory = "d:\PersonalData\Test" 'az alkönyvtár ahol a fájlok vannak.

 

    Set FSO = CreateObject("Scripting.FileSystemObject")

    Set folder = FSO.GetFolder(directory)

 

    For Each file In folder.Files

 

        Application.DisplayAlerts = False 'windows üzenetek kikapcsolása

        Workbooks.Open file

        tempWB = ActiveWorkbook.Name

        Worksheets(1).Activate 'az elsõ munkalap ahol az adatok vannak

        Range("A1:J200").Select 'az a tartomány ahol az adatok vannak

        Selection.Copy

 

        Workbooks(thisWB).Worksheets(dbSh).Activate

        Cells(i, 1).Select 'adatok bemásolása az adatbázisba

        ActiveSheet.Paste

        i = i + 200 'következõ adathalmaz 200 sorral késõbb másolódik

        Workbooks(tempWB).Activate

        ActiveWorkbook.Saved = True

        ActiveWorkbook.Close 'becsukjuk az alapfájlt

        Application.StatusBar = tempWB & " kész" 'statusbar frissítése, hol tart a program

 

    Next file

End Sub

 

 

Előzmény: mixtura_pectoralis (14705)