Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 20. 8. 2020 13:20:13

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 115

MAKRO - zjištění cesty k otevřenému souboru - VYŘEŠENO

Dobrý den


Potřebuji makrem zjistit, kde se nachází (v jakém adresáři) dokument OpenOffice, který mám spuštěný a který obsahuje toto makro. Tedy příklad:


Dokument Pokus.odt je uložený v adresáři Home, a dokument obsahuje mimo jiné tlačítko. Po otevření dokumentu a stisknutí tlačítka potřebuji zjistit cestu např. C:/Data/Dokumenty/Home. Jaký příkaz basicu v makru použít, abych jako výsledek dostal požadovaný řetězec. Ten potřebuji proto, abych s ním následně v jiném makru prováděl potřebné úpravy.


Díky za radu

Editoval hdplot (24. 8. 2020 12:29:18)

Offline

#2 20. 8. 2020 15:14:16

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: MAKRO - zjištění cesty k otevřenému souboru - VYŘEŠENO

hdplot napsal(a)

Dobrý den
Potřebuji makrem zjistit, kde se nachází (v jakém adresáři) dokument OpenOffice, který mám spuštěný a který obsahuje toto makro.

Pokud potřebujete celou adresu :

Sub MyUrl
Dim Doc as object
Doc = ThisComponent
print "Upravená Url " & ConvertFromUrl(Doc.Url)
print "Neupravená Url " & Doc.Url
End Sub

Pokud potřebujete jen adresář - potom si uložte tuto funkci :

Function AktualniURL()
Dim ss as string
ThisComponent.hasLocation
s = ThisComponent.getURL()
For i = Len(s) To 1 Step - 1
IF Mid(s,i,1) = "/" OR Mid(s,i,1) = "\" Then
ss = Left(s,i) 'Uřízneme název souboru ze kterého je makro (funkce) spuštěna
Exit For
End If
Next i
AktualniURL = ConvertFromURL(ss)
End Function

     Můžete to použít v aktuálním sešitě přímo v buňce jako vzorec

=Function AktualniURL()

, nebo to napojit do nějakého makra - příklad :

Sub testURL
print AktualniURL()
End Sub

Editoval neutr (20. 8. 2020 15:23:06)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 20. 8. 2020 15:21:41

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 368

Re: MAKRO - zjištění cesty k otevřenému souboru - VYŘEŠENO

ThisComponent.Url

když není dokument uložený (jde třeba o nový dokument), tak je ta vlastnost prázdný řetězec. Nebo to jde testovat přes vlastnost hasLocation.

Sub aktualniUrl
	If thisComponent.hasLocation=false Then
		msgbox "dokument nemá url, není uložený"
	Else
		msgbox thisComponent.Url
	End If
End Sub

Editoval kamlan (20. 8. 2020 15:32:18)

Offline

#4 21. 8. 2020 07:29:33

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 115

Re: MAKRO - zjištění cesty k otevřenému souboru - VYŘEŠENO

OK - vyzkouším přes víkend, ale myslím, že je to ono

Díky

Offline

#5 21. 8. 2020 14:00:14

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 115

Re: MAKRO - zjištění cesty k otevřenému souboru - VYŘEŠENO

Jak se říká - nechval dne před večerem.


Nabídnuté možnosti jsem vyzkoušel s fungují skvěle např. z dokumenti Writeru. Ale já to potřebuji spouštět z dokumentu Base - tedy z nějakého formuláře Base a v tom případě mi to bohužel vrátí prázdný řetězec, takže zase nevím nic.


Pokud to tedy volám z formulářového okna vnořeného do Base a nikoliv přímo z dokumentu Base, tak tento příkaz není správný (vhodný). Nemá někdo ještě nějaký další typ ?  A nebo něco dělám špatně ?

Offline

#6 21. 8. 2020 15:36:58

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 368

Re: MAKRO - zjištění cesty k otevřenému souboru - VYŘEŠENO

Uváděl jste jako příklad soubor Pokus.odt, což je pro Writer.

Pakliže to voláte z formulářového okna, tak máte třeba proměnnou oForm pro ono formulářové okno. Ke kořenovému "dokumentu base" tedy ThisComponent se můžete dostat třeba

oDocDB=oForm.Parent.Parent

Používáte ještě doplněk XRay https://forum.openoffice.cz/viewtopic.php?id=5680 ? V něm byste si to myslím snadno naklikal :-)

Offline

#7 24. 8. 2020 12:31:19

hdplot
Člen
Registrace: 18. 2. 2015
Příspěvků: 115

Re: MAKRO - zjištění cesty k otevřenému souboru - VYŘEŠENO

Ano doplněk XRay jsem použil, ale bohužel tako konstrukce opakovaného volání rodičů mě nenapadla. Takže děkuji za radu a považuji to za vyřešené

Offline

Zápatí