Jste zde: Úvodní stránka » excel » vba-soubory » excel-vba-vypis-cesty-k-souboru
Vypis cesty k souboru - VBA Excel
Soubory a adresáře, jak na ně ve VBA v MS Excelu?
Úvodem
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).
Cesta
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.
Funkce CestaAdresare
Function CestaAdresare()
CestaAdresare = ThisWorkbook.Path
End Function
V buňce jen zadáme: =CestaAdresare()
Jméno souboru
Vypíše jméno souboru ze kterého ej makro spuštěno.
JmenoSouboru = ThisWorkbook.Name
Cesta včetně názvu souboru
CestaVcetneNazvuSouboru = ThisWorkbook.Fullname
Nebo za využítí předcházejicí VBA maker.
CestaVcetneNazvuSouboru = CestaAdresare & "\" & JmenoSouboru
Pod adresář
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.
Nadřazený adresář
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í.
- O kolik nadřazených složek se potřebujeme dostat nahoru (V příkladu 1)
- Zjistíme počet znaků adresaře funkcí LEN, musíme použít anglicky název této funkce. Jelikož český POČET funguje jen v sešitu MS EXcel.
- Zjistíme počet lomítek adresáře ve VBA funkcí MID. Česky ČAST.
- Vypočteme pořadí zvoleného lomítka
- Vypreparujeme požadovaný text pomocí funkce LEFT, Česky ZLEVA.
- A máme hotovo.
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
Závěr
Poslední uvedené makro můžeme převést na funkci :)
Článek byl aktualizován: 21.01.2012 20:34
Další články k tématu
- Zpracovatelné formáty souborů v Excelu
- Existuje soubor - adresář (složka)
- Vypis cesty k souboru - právě čtete
- Vypsat adresáře - soubory
- Je soubor otevřen
- Otevřít soubor s heslem
- Otevřít soubor a předat mu nějaký parametr
- Tisk do *.pdf
- Smazat soubor
- Vytvořit smazat adresář
- Kopírovat a přejmenovávat soubory
- Omezení platnosti souboru - dokumentu
- Kdo přistupuje do souboru
- Velikost souboru
- Je atribut souboru pouze pro čtení - VBA Excel
Komentáře
mumiak
Přidáno: 13.07.11 09:26
CestaVcetneNazvuSouboru = ThisWorkbook.Fullname
Pavel Lasák
Přidáno: 13.07.11 16:35
To muniak: Díky. Doplněno v článku jako další možnost.
bod
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.
Pavel Lasák
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ání nového komentáře
Za obsah komentářů neodpovídám, jelikož jsou komentáře publikovány ihned po jejich napsání čtenářem. Toto nemohu nijak ovlivnit. Přesto si vyhrazuji možnost jakýkoli neslušný komentář smazat bez udání důvodu.
Nejnovější článek
Z článku o
excel jsem jako poslední přidal či upravil článek
14.05.2012:
Kombinování funkcí - vzorců.
Nejčtenější článek
Excel
- Základy MS Excel
- menu Soubor
- Formát dat
- Vložit
- Grafy
- Vzorce (Funkce)
- Matice
- Data
- Revize (Nástroje)
- VBA Úvod a seznamy článků
- VBA Teorie základy
- VBA Buňky cell
- VBA Listy sheet
- VBA Práce se soubory
- Zpracovatelné formáty souborů v Excelu
- Existuje soubor - adresář (složka)
- Vypis cesty k souboru
- Vypsat adresáře - soubory
- Je soubor otevřen
- Otevřít soubor s heslem
- Otevřít soubor a předat mu nějaký parametr
- Tisk do *.pdf
- Smazat soubor
- Vytvořit smazat adresář
- Kopírovat a přejmenovávat soubory
- Omezení platnosti souboru - dokumentu
- Kdo přistupuje do souboru
- Velikost souboru
- Je atribut souboru pouze pro čtení - VBA Excel
- VBA Formuláře (UserForm)
- VBA Grafy
- VBA Application
- VBA Pás karet, Menu
- VBA Triky
- VBA praktické příklady kódu
- Praktické příklady
- Finanční poradce
- Šablony - Templates
- Testy
- Ostatní
Google+
Novinky
Matematické rovnice (vzorce) - Word 2010
Excel: 14.05.2012:
Kombinování funkcí - vzorců
Access: 28.04.2012:
VBA - Jak spustit v MS Access
Power Point: 25.04.2012:
SmartArt - PowerPoint 2010
Outlook 26.04.2012:
Outlook 2010 - jak vypadá
Project: 05.04.2012:
Kalendář ukázka
OneNote: 17.10.2010:
OneNote 2010 – popis obrazovky
Office 30.04.2012:
Kde hledat odpovědi na dotazy o MS Office
Poděkování
Translate
Stránky o MS Office produktu společnosti Micosoft. Neslouží jako technická podpora.
| Email na autora: lasak@centrum.cz | Copyright © : Pavel a Danka 2006 - 2012 |
| Doporučuji: Advokátní kancelář Brno - Dana Lasáková |
1071
Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.