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
Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.
Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). 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 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.
Přidáno: 13.07.11 09:26
CestaVcetneNazvuSouboru = ThisWorkbook.Fullname
Přidáno: 13.07.11 16:35
To muniak: Díky. Doplněno v článku jako další možnost.
Přidáno: 16.09.11 07:30
Chci poslat MS Outlookem v emailu přibalený soubor. Dělám to ve VBA pomocí OutlookMailItem a .Attachment.Add, bohužel se mi přibalený soubor posílá jako prázdný (0 b). Co dělám se souborem špatně? Díky za pomoc.
Přidáno: 18.09.11 11:58
To Bod: Zkuste diskuzi http://www.pcreview.co.uk/forums/vba-outlook-attachments-question-t1836514.html
Přidáno: 21.03.13 12:47
Lze přednastavit cestu k souboru při otevírání souboru (GetOpenFilename)? Při ukládání to jde (u GetSaveAsFilename je parametr InitialFileName). Děkuji
Přidáno: 28.03.13 08:34
Můžu zopakovat svůj dotaz? Třeba se na něj zapomnělo. Lze přednastavit cestu k souboru při otevírání souboru (GetOpenFilename)? Při ukládání to jde (u GetSaveAsFilename je parametr InitialFileName). Děkuji
Přidáno: 28.03.13 16:09
To Honza: Nezapomnělo. Třeba vám pomůže: http://www.mrexcel.com/forum/excel-questions/371814-visual-basic-applications-getopenfilename.html bohužel tento web není technickou podporou (proto prioritu nedávám do odpovídaní na dotazy).
Přidáno: 10.04.13 13:11
Cestu lze přednastavit místo GetOpenFilename použítím Application.FileDialog(msoFileDialogFilePicker). Tady lze také nastavit cestu metodou .InitialFileName = mojecesta
Přidáno: 10.04.13 16:11
To Honza: Děkuji za odpověď určitě se bude hodit někomu dalšímu.
Přidáno: 01.10.14 11:40
Zdravím a díky za Vaše stránky. Mám dotaz - lze nějak zjistit cestu a název souboru, který mám otevřený, přičemž makro spouštím z jiného souboru? ThisWorkbook.Fullname vypíše cestu k souboru s makrem, ale já bych potřeboval cestu k souboru, ve kterém pracuji. díky...
Přidáno: 06.10.14 08:29
To Tomas: -- Cesta a názov aktívneho súboru: --ActiveWorkbook.FullName
Přidáno: 08.10.14 12:45
To Jojo: Výborně, díky...
Přidáno: 06.05.15 13:46
Díky moc za Vaší práci a rady! Podařilo se mi, jako úplnému začátečníkovi pomocí makra převést soubor do pdf., uložit ho, pojmenovat ho podle zadaných skutečností. Teď bych ještě potřeboval, aby otevřel dialogové okno Outlooku, do přílohy dal vytvořený pdf. soubor a do pole Kopie zadal vždy stejnou emailovou adresu. Do pole předmět název souboru Je to možné?
Přidáno: 06.08.15 22:33
to Aleš Krejbich je to možné metod je hodně podívej se youtube
Přidáno: 10.11.15 20:50
Příponu od názvu souboru Pavle umíte rozdělit přes Split a parsovat cestu stejným způsobem ne? V cyklu procházíte znaky? InStrRev nic? Kromě toho, mnohem elegantnější je model FSO. Prostě jsem od vás čekal víc, ne SEO serepetičky pro srandu králíkům.
Přidáno: 15.11.15 14:26
To xlnc: Děkuji, mám v plánu doplnit, jako spoustu dalších informací do jiných článku. Jen den má stále jen 24 hodin :(
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 - 2024 |