Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel - makro

Ahojte,
nebudu zdržovat, tudíž krátce.
Mám dílčí excelovské soubory označené jako Vzorek 1-3.xlsx. V každém z nich je na daném listu v dané buňce jeden parametr (ten je vždy umístěn na stejném místě v každém sešitě). Velice by mi pomohlo, kdyby mi tady někdo napsal konkrétní makro, které by kopírovalo data z označených "zažlutěných" buněk ze sešitů Vzorek 1-3.xlsx do jednoho sešitu Master.xlsx (zase do vyznačených žlutých oblastí).
S makry skoro neumím, takže prosím polopatisticky.
Všechny výše zmíněné excelovské soubory jsou zararované v příloze.

Moc děkuji!

Předmět Autor Datum
Sub LoadData() Dim aRange As Range Dim aIndex As Integer Dim aOpened As Boolean Dim aFilename As Str…
los 30.03.2013 21:44
los
Lose, moc děkuju, funguje to - neuvěřitelné! :-) Mě ještě napadlo...v případě, že by se ve složce k…
Mirror001 31.03.2013 12:15
Mirror001
Aby sa názvy súborov brali podľa stĺpca Vzorek, tak stači upraviť riadok: aFilename = "Vzorek " & a…
los 31.03.2013 12:23
los
To mi právě nefunguje - zbytek opravdu zůstane stejný včetně: aRange.Cells(aIndex, 1).Value = aWork…
Mirror001 31.03.2013 13:15
Mirror001
To, čo som napísal, by malo fungovať vtedy, keď do stĺpca Vzorek vypíšeš ručne názvy tých súborov, z…
los 31.03.2013 13:36
los
Díky moc za radu, lose. Ale vidím to tak, že než to komplikovat, tak všem souborům přiřadím stejný n…
Mirror001 31.03.2013 13:50
Mirror001
Dobrý den, já bych potřeboval obdobné makro, s tím rozdílem že by vyhledávalo určité xlsx soubory v… poslední
Davek 07.02.2014 15:22
Davek
Ještě jedna věc - V každém ze svých cca 70ti sešitů je v buňce A47 umístěn text (pokaždé jiný). Pora…
Mirror001 31.03.2013 23:14
Mirror001
Umiestni tento VBS skript do adresára a spusti: Set app = CreateObject("Excel.Application") Set fso…
los 01.04.2013 22:35
los
lose, nějak mi to nefunguje pro xlsm soubory (i přesto, že jsem přepsal xlsx na xlsm). Není to tím,…
mirror001 - jinde 08.04.2013 08:56
mirror001 - jinde
Neviem, čím to je, ale názov listu stačí predsa doplniť do tohoto riadku: name = wb.Worksheets("PXD…
los 08.04.2013 19:59
los
Sub LoadData()
    Dim aRange As Range
    Dim aIndex As Integer
    Dim aOpened As Boolean
    Dim aFilename As String
    Dim aWorkbook As Workbook
    
    Set aRange = Range("C3:E5")
    For aIndex = 1 To aRange.Rows.Count
        aFilename = "Vzorek " & aIndex & ".xlsx"
        On Error Resume Next
        Set aWorkbook = Workbooks(aFilename)
        On Error GoTo 0
        If aWorkbook Is Nothing Then
            Set aWorkbook = Workbooks.Open(ThisWorkbook.Path & "\" & aFilename)
            aOpened = True
        End If
        aRange.Cells(aIndex, 1).Value = aWorkbook.Worksheets("Povrch").Range("B5")
        aRange.Cells(aIndex, 2).Value = aWorkbook.Worksheets("Objem").Range("C5")
        aRange.Cells(aIndex, 3).Value = aWorkbook.Worksheets("Poloměr").Range("D5")
        If aOpened Then
            aWorkbook.Close False
            aOpened = False
        End If
        Set aWorkbook = Nothing
    Next aIndex
End Sub

Lose, moc děkuju, funguje to - neuvěřitelné! :-)

Mě ještě napadlo...v případě, že by se ve složce kromě výše zmíněných souborů Vzorek 1-3.xlsx nacházely třeba soubory A.xlsx nebo Materiál.xlsx - dal by se ten kod ještě nějak vylepšit, aby to tahalo i data z nich?? V podstatě by stačilo, aby to tahalo data ze všech xlsx souborů ve složce (samozřejmě krom toho MASTERu). Umístění kopírovaných buňěk v těchto sešitech samozřejmě zůstává stejné.

To mi právě nefunguje - zbytek opravdu zůstane stejný včetně:

aRange.Cells(aIndex, 1).Value = aWorkbook.Worksheets("Povrch").Range("B5")
        aRange.Cells(aIndex, 2).Value = aWorkbook.Worksheets("Objem").Range("C5")
        aRange.Cells(aIndex, 3).Value = aWorkbook.Worksheets("Poloměr").Range("D5")

??
Bavíme se o načítání všech xlsx souborů ze složky bez rozdílu názvu?

To, čo som napísal, by malo fungovať vtedy, keď do stĺpca Vzorek vypíšeš ručne názvy tých súborov, z ktorých chceš načítať hodnoty.

Ak chceš načítavať hodnoty podľa súborov, ktoré sú v adresári, tak použi funkciu Dir.

Ďalšie problémy, ktoré budeš musieť riešiť, sú:
- vyčistenie oblasti po predchádzajúcom načítaní dát,
- úprava formátovania buniek (ak ti na tom záleží).

Ak to potrebuješ len jednorazovo, tak výpis všetkých *.xlsx súborov dostaneš jednoducho pomocou príkazového riadku:

dir *.xlsx /B

Dobrý den,
já bych potřeboval obdobné makro, s tím rozdílem že by vyhledávalo určité xlsx soubory v různých adresářích a obsah listu každého z nich by překopírovalo do nového souboru na jeden list pod sebe (hlavičky a sloupce jsou stejné, pouze se mění data a počty řádků).
Př. vybrat data ze souborů beh* v adresářích
c:\kurzy\20140201\beh1.xlsx
c:\kurzy\20140202\beh2.xlsx
c:\kurzy\20140203\beh3.xlsx a vložit do nového souboru c:\kurzy\2014_02\prehled.xlsx

Umiestni tento VBS skript do adresára a spusti:

Set app = CreateObject("Excel.Application")
Set fso = CreateObject("Scripting.FileSystemObject")

path = fso.GetAbsolutePathName(".")
Set folder = fso.GetFolder(path)
For Each file In folder.Files
    If LCase(fso.GetExtensionName(file.Name)) = "xlsx" Then
        Set wb = app.Workbooks.Open(path & "/" & file.Name)
        name = wb.Worksheets(1).Range("A47").Value
        wb.Close
        Set wb = Nothing
        If file.Name <> name & ".xlsx" Then
            file.Name = name & ".xlsx"
        End If
    End If
Next
app.Quit

Set app = Nothing
Set fso = Nothing

Zpět do poradny Odpovědět na původní otázku Nahoru