Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
Soubory a adresáře, jak na ně ve VBA v MS Excelu? Získat jméno, příponu, umístění v adresáři aktuálního sešitu.
Doplněno: 1.11.2015
Při vytváření maker ve VBA, je někdy potřeba číst/zapisovat do jiného Excelovského souboru. Je vhodné použít relativní cesty. Aby námi vytvořené makro fungovalo i na jiném PC (v jiném adresáři). Pro přehlednost je soubor rozdělen na jednotlivé kapitoly:
Vypíše cestu ve které se nachází spouštěné makro. Příkaz DIR v MS DOS.
CestaAdresare = ThisWorkbook.Path
Poznámka: Pro tento příklad můžeme využít i funkce.
Function CestaAdresare()
CestaAdresare = ThisWorkbook.Path
End Function
V buňce jen zadáme: =CestaAdresare()
Vypíše názej (jméno) aktivního souboru (ze kterého je makro spuštěno).
JmenoSouboru = ThisWorkbook.Name
Vypíše pouze název (jméno) souboru (bez přípony) a příponu.
Dim NazevSoubor As String, FileName As String, FileType As String
NazevSoubor = ThisWorkbook.Name
pomucka = Split(NazevSoubor, ".")
FileName = pomucka(0)
FileType = pomucka(1)
MsgBox FileName
MsgBox FileType
CestaVcetneNazvuSouboru = ThisWorkbook.Fullname
Nebo za využítí předcházejicí VBA maker.
CestaVcetneNazvuSouboru = CestaAdresare & "\" & JmenoSouboru
Pokud se ve složce, kde máme náš soubor s makrem potřebujeme přesunout do nadřazeného adresáře není problém.
CestaVcetneSouboruA_PodAdresare = CestaAdresare & "\data\" & JmenoSouboru
Poznámka: Podadresář data.Využívá předcházejicí VBA makra.
Jsem ve složce C:/VBA/pokus/adresar a potřebuji se dostat do C:/VBA/pokus. Tady již nastává menší problém, ale i ten je řešitelný. Můj postup je nasledující.
Poznámka: Můžeme doplníme o kontrolu, pokud někdo chce zobrazit vyšší podsložku než můžeme, případně o dialogová okna k zadání dotazu.
Postřeh: Překlady funkci do češtiny jsou zlo. V sešitu se používá česká při programování maker anglická. Po chvíli je v tom chaos.
Private Sub PozadovanyAdresar()
CestaAdresare = ThisWorkbook.Path
KolikAdresaruNahoru = 1
CestaPocetZnaku = Len(CestaAdresare)
PocetLomitekAdresare = 0
For i = 1 To CestaPocetZnaku
ZnakLomitko = Mid(CestaAdresare, i, 1)
If ZnakLomitko = "\" Then
PocetLomitekAdresare = PocetLomitekAdresare + 1
End If
Next i
i = 1
PoradiLomitka = 0
For i = 1 To CestaPocetZnaku
ZnakLomitko = Mid(CestaAdresare, i, 1)
If ZnakLomitko = "\" Then
PoradiLomitka = PoradiLomitka + 1
ElseIf PoradiLomitka = PocetLomitekAdresare - KolikAdresaruNahoru Then
PozadovaneLomitko = i
End If
Next i
PozadovanyAdresar = Left(CestaAdresare, PozadovaneLomitko)
MsgBox (PozadovanyAdresar)
End Sub
Toto makro můžeme převést na i funkci :)
Soubor
VBA soubory adresáře
ke stažení zdarma. Soubor využívá makra.
Využívate ve svých VBA projektech? Máte nějaký zajimavý tip, trik? Můžete se pochlubit v komentářích.
Článek byl aktualizován: 19.09.2020 11:07
Pomohl vám článek? Vyřešili jste problém? Můžete mě podpořit zakoupení tabulky (samozdřejmě čokoládové), když kafe nepiji ;) Odkaz na zakoupení čokolády. Za veškerou podporu vám děkuji a samozdřejmě jí využiji do zdokonalování a rozšířování webu.
Případně přidejte odkaz na vaši oblíbenou sociální síť, případně využijste hashtag #JakNaExcel .
Děkuji za váš čas a doufám, že jste nalezli odpověď na svůj problém.
Narazili jste v článku na nejasnost, chybu? Máte tip na vylepšení nebo doplnění článku? Budu rád pokud se zmínite v komentářích.
Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od dubna roku 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím 8x za sebou). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 20 let (o Excel píší přes 25). Zdarma je zde přes 1.500 návodu, tipů a triků, včetně přes 350 různých šablon, sešitů a přes 70 taháků v pdf.
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2025 |