Přeskočit navigaci | Přeskočit na novinky

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í.

  1. O kolik nadřazených složek se potřebujeme dostat nahoru (V příkladu 1)
  2. 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.
  3. Zjistíme počet lomítek adresáře ve VBA funkcí MID. Česky ČAST.
  4. Vypočteme pořadí zvoleného lomítka
  5. Vypreparujeme požadovaný text pomocí funkce LEFT, Česky ZLEVA.
  6. 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



| tisk stránky TISK | nahoru NAHORU |
| |

Další články k tématu




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




(vlož číslo šest)

Z bezpečnostních důvodu dočasně nemůžete použít HTML značky a URL. Děkuji za pochopení.
Děkuji, za Vaše 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




Google+

  

Facebook

facebook  

Novinky

Word: 12.5.2012:
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í

Poděkování patří hlavně mojí nejbáječnější manželce.

LinkedIN

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.