Stránka 1 z 1

excel - makro na rozdělení tabulky dle kategorií  Vyřešeno

Napsal: 26 lis 2012 18:47
od s3jr4
Ahoj, přepracoval sem zadání.

Potřeboval bych makro, které by umělo:
1. v sheetu 2012 se vyfiltrují pouze řádky, kde je vyplněno datum nalinkování
2. postupně se vyfiltruje každá kategorie a výsledky se zkopírují do samostatných sheetů (naznačeno v příloze + ukázkové makro)
3. každý vygenerovaný sheet se uloží jako html (ukázkové makro)

Krok 2 a 3 pro další kategorie jsem chtěl udělat zkopírováním ukázkového makra, ale snad to půjde jednodušeji.

Doplnění k:
2. karegorie bych rád měl v samotném sheetu (data) a při doplnění další kategorie by s ní makro mělo umět pracovat
2. kategorie bude víceslovný název, ale může ji být pro potřeby excelu/VBA přiřazen i zkrácený název (např. ru tvrdý - rum_tvrdy)
2. a 3. pokud přidám nový řádek (třeba víno), nechci, aby se provádělo makro pro ostatní kategorie - těch bude cca 50 a zdržovalo by to

Děkuji za pomoc.

--------------------------------------------------------------------------------------------------------------------------------------
staré zadání

Ahoj,
šlo by udělat makro na generování dalšího makra?

Vysvětlím. Mám řekněme makro 1 (jen příklad), ve kterém jsou dvě proměnné (promennaA a promennaB).
Chci makro, které mi pro zadání těchto proměnných vyhodí kód, který je bude obsahovat.

Kód: Vybrat vše

Sub promennaB()
    Sheets("Sheet1").Select
    ActiveSheet.Range("$A:$B").AutoFilter Field:=1, Criteria1:="promennaA"
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("promennaB").Select
    ActiveSheet.Paste
End Sub


Ideální by bylo, kdyby šlo zadat hodnoty tabulkou a vygenerovalo by se tolik kódů, kolik bude v tabulce řádků (případně zadávat jednotlivě).

Tabulka 1 - vygeneruje 2 kódy

Kód: Vybrat vše

promenna1A promenna1B
promenna2A promenna2B


Výsledek by byl

Kód: Vybrat vše

Sub promenna1B()
    Sheets("Sheet1").Select
    ActiveSheet.Range("$A:$B").AutoFilter Field:=1, Criteria1:="promenna1A"
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("promenna1B").Select
    ActiveSheet.Paste
End Sub

Sub promenna2B()
    Sheets("Sheet1").Select
    ActiveSheet.Range("$A:$B").AutoFilter Field:=1, Criteria1:="promenna2A"
    Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("promenna2B").Select
    ActiveSheet.Paste
End Sub


Výstup by sesá zapsal jako nové makra do modulu (nejde?), nebo jako text a do VBA by se ručně zkopíroval.

Šlo by něco takového vyrvořit (za použití kompromisů)?

Děkuji za pomoc,
Jirka.

Re: excel - makro na generování kódu

Napsal: 26 lis 2012 19:01
od cmuch
Nějak jsem to nepobral co vlastně potřebuješ.
Nebyla by nějaká příloha, aby jsme tady měli lepší představu co potřebuješ.

Re: excel - makro na generování kódu

Napsal: 26 lis 2012 21:04
od s3jr4
Pokusil jsem se to nastínit přímo v sešitu.

Re: excel - makro na generování kódu

Napsal: 26 lis 2012 22:48
od Mirdad69
Ahoj, zatím také nechápu, co má být cílem. Proč potřebuješ x naprosto stejných maker v jednom modulu?
Proč ti nestačí 1 makro, ve kterém řídíš proměnné podle určitého klíče. Např. dle aktuálního řádku apod.

Re: excel - makro na generování kódu

Napsal: 27 lis 2012 08:01
od s3jr4
Možná mi stačí jedno makro, jen to nevím.

Šel jsem na to asi špatně, vezmu to tedy od začátku.

Popis jsem doplnil do prvního příspěvku.