< návrat zpět

MS Excel


Téma: Zjednodušení otevření a úpravy více souborů rss

Zaslal/a 30.7.2015 21:56

Zdravím a prosím o radu. Mám vytvořené jednoduché makro, které otevře několik souborů xlsx, kde provede jednoduchou úpravu, uloží a zavře. Prosím o radu zda je možné toto provést nějakým cyklem abych nemusel vytvářet a volat makra postupně. Vždy se provede stejná úprava, ale v jiném souboru s jiným daty. Souborů může být až např. 10. Všem děkuji.

Sub uprav()
Call Z1
Call Z2
Call Z3
Call Z4
Call Z5
End Sub
Sub Z1()
With Workbooks.Open(ThisWorkbook.Path & "\Z1.xlsx")
For x = 1 To Cells(Rows.Count, 2).End(xlUp).Row
Cells(x + 1, 1) = Cells(x + 1, 3).Value & Cells(x + 1, 4).Value
Next x
.Save
.Close
End With
End Sub
Sub Z2()
With Workbooks.Open(ThisWorkbook.Path & "\Z2.xlsx")
For x = 1 To Cells(Rows.Count, 2).End(xlUp).Row
Cells(x + 1, 1) = Cells(x + 1, 3).Value & Cells(x + 1, 4).Value
Next x
.Save
.Close
End With
End Sub

Zaslat odpověď >

#026042
elninoslov
Sub SpustiZmenu_Click()
Dim Cesta As String, Subor As String, WB As Workbook, x As Long
Cesta = ThisWorkbook.Path & IIf(Right(ThisWorkbook.Path, 1) = "\", "", "\")
Subor = Dir(Cesta & "*.xlsx", vbNormal)
Application.ScreenUpdating = False
While Subor <> vbNullString
On Error GoTo CHYBA
Set WB = Workbooks.Open(Cesta & Subor)
On Error GoTo 0
With WB
With .ActiveSheet
For x = 1 To .Cells(Rows.Count, 2).End(xlUp).Row
.Cells(x + 1, 1) = .Cells(x + 1, 3).Value & .Cells(x + 1, 4).Value
Next x
End With
.Save
.Close
End With
GoTo POKRACUJ
CHYBA:
MsgBox ("Chyba pri spracovaní súboru :" & vbNewLine & vbNewLine & Cesta & Subor)
POKRACUJ:
Subor = Dir()
Wend
Application.ScreenUpdating = True
End Sub

Vytvorte si v zložke s Vašimi súbormi jeden súbor XLSM v ktorom napr. tlačítkom spustite makro.

PS: Ešte som zabudol dodať, že to otvorí a Vašim spôsobom upraví všetky súbory "*.xlsm", ktoré v danom adresári nájde. Takže pokusy robte na kópii adresára s ostrými dátami.citovat
#026047
avatar
Děkuji, vyzkouším. S VBA začínám, tudíž děkuji, že se mohu přiučit.citovat
#026049
elninoslov
Ešte by som mal jedno dôrazné odporúčanie:
Vo Vašom kóde chýba odkazovanie na nejaký list. Odkazujete hneď na Cells, čiže na buňky práve aktívneho listu. Môže sa Vám stať a škaredo vypomstiť, ak sa omylom prepnete na iný list, Excel si zapamätá tento list, a nabudúce súbor otvorí na ňom. A je vymalováno. Riešenie je buď používať v zošitoch len jediný list, alebo .ActiveSheet nahradiť za .Worksheets("meno_listu"), a v každom súbore sa musí upravovaný list volať rovnako, vtedy môžete použiť aj viac listov, aj môže byť ktorýkoľvek aktívny.citovat
#026050
avatar
OK, děkuji za cenné rady.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje