Hirdetés
-
PROHARDVER!
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Mutt
senior tag
Szia,
...ugyan abban a sorrendben hagyja a füleket mint ahogy van...
A lenti kód már figyel a sorrendre is és kitörli az új fájl létrehozásakor automatikusan létrejövö felesleges lapo(ka)t.
A másik hiba pedig abból adódik, hogy mindent másolunk (értéket, képletet, formázást, elnevezett tartományokat stb) és ez ütközést okoz. Mindegyik fájlban ugyanaz a változó van a névkezelőben, így másoláskor ez hibára fog futni.
A Power Query megoldás csak egy lapot kezel, de viszonylag gyorsan lehet mindegyik lapra elkészíteni a lekérdezesét és legközelebb már csak a frissítésre kell kattintani, hogy az összes lapot legenerálja.
Sub ttt()
Dim forraslap As Worksheet, cellap As Worksheet
Dim forrasfuzet As Workbook
Dim lap As Worksheet
Dim ureslapok() As String, c As Long
mappak = Array("D:\Mappa\")
If Dir("D:\Mappa\eredmeny.xlsx") <> "" Then Kill "D:\Mappa\eredmeny.xlsx"
For Each mappa In mappak
Set uj = Workbooks.Add
'megjegyezzük a frissen létrehozott fájlban lévő üreslapokat
ReDim ureslapok(1 To uj.Worksheets.Count)
For i = 1 To UBound(ureslapok)
ureslapok(i) = uj.Worksheets(i).Name
Next i
fajl = Dir(mappa & "*.xlsx")
Do While fajl <> ""
Set forrasfuzet = Workbooks.Open(Filename:=mappa & fajl, ReadOnly:=True)
For i = 1 To forrasfuzet.Worksheets.Count
Set forraslap = forrasfuzet.Worksheets(i)
Set cellap = Nothing
If forraslap.Visible = xlSheetVisible Then 'csak a látható lapok érdekelnek
On Error Resume Next
'próbáljuk megnyitni az új füzetben a forrásban található azonos nevű lapot
Set cellap = uj.Worksheets(forraslap.Name)
On Error GoTo 0
If IsArray(ureslapok) Then
For c = 1 To UBound(ureslapok)
If forraslap.Name = ureslapok(c) Then 'ezt a lapot meg kell tartanunk mert volt a forrásfájlban
ureslapok(c) = ""
End If
Next c
End If
'ha nincs még az új füzetben ilyen nevű lap, akkor létrehozzuk
If cellap Is Nothing Then
Set cellap = uj.Worksheets.Add(after:=Worksheets(forraslap.Index - 1)) 'sorrendben adja hozzá
cellap.Name = forraslap.Name
End If
'ha még nincs fejléc akkor másoljuk
If cellap.Range("A1").CurrentRegion.Rows.Count = 1 Then
forraslap.Range("A1", forraslap.Range("A1").SpecialCells(xlLastCell)).Copy cellap.Range("A1")
Else
'ha már van fejléc akkor azt átugorjuk
forraslap.Range("A2", forraslap.Range("A1").SpecialCells(xlLastCell)).Copy _
cellap.Range("A" & cellap.Range("A1").CurrentRegion.Rows.Count + 1)
End If
End If
Next i
'bezárjuk a forrásfájlt
forrasfuzet.Close False
'jöhet az újabb fájl a mappából
fajl = Dir()
Loop
'felesleges munkalapok tőrlése a végső fájlból
Application.DisplayAlerts = False
If IsArray(ureslapok) Then
For c = 1 To UBound(ureslapok)
If ureslapok(c) <> "" Then
uj.Worksheets(ureslapok(c)).Delete 'erre a lapra már nincs szükség
End If
Next c
End If
Application.DisplayAlerts = True
uj.SaveAs mappa & "eredmeny.xlsx"
uj.Close False
Next
MsgBox "Kész"
End Subüdv
Új hozzászólás Aktív témák
- Apple Watch Ultra - első nekifutás
- Bemutatkozott a Poco X7 és X7 Pro
- Battlefield 6
- Renault, Dacia topik
- NFL és amerikai futball topik - Spoiler veszély!
- Luck Dragon: Asszociációs játék. :)
- Lexus, Toyota topik
- sziku69: Fűzzük össze a szavakat :)
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- Bitcoin topic
- További aktív témák...
- NJOY Szünetmentes + AVR Horus Plus 2000, 2000VA, 1200W, Line-Interactice, LCD Touch displa PWUP-LI20
- 14" Dell Latitude laptopok: 5400, 5480, 5490, 7480, E6410, E6440, E5450 / SZÁMLA + GARANCIA
- Eladó 2db Nokia steel hr hibrid okos óra dobozával
- GYÖNYÖRŰ iPhone 12 64GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3654, 100% Akksi
- Apple iPhone Xs 64GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Fferi50

