Hyperlink /starDesktop
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Hyperlink /starDesktop
Witam szanownych użytkowników
To mój pierwszy wpis , a za razem pierwsze makro w basic.
Napotkałem 2 problemy których nie potrafię obecnie rozwiązać , a także nie znalazłem rozwiązania w necie.
1) jak pobrać w firmie stringa adres url ( ”filie:/// " jest to adres do pliku - osobny plik w openoffice)
Dodam iż adres ten jest wynikiem działania formuły który składa teksty, z innych komórek i tworzy odnośnik do pliku.
Reguła wygląda miej więcej tak =jeżeli(c7>1;hiperłącze(złącz.teksty(...........);"moja nazwa linku");"nic")
Umiem jedynie pobrać "moja nazwa linku" .......
2) używam metody StarDestop() od otwierania dokumentów które odczytuje z linków i to działa prawie dobrze....
Dokumnety wskazane linkiem otwierają się jednakże nie aktualizują wartości z innych dokumnetów.
(Jak totwieram klikając na link w dokumencie źródłowym to działa poprawnie , Klikam i się aktualizują odnośniki z innych dokumnetów), wiec podejrzewam iż w parametrach wywołania StarDesktop() mają być przekazane jakieś parametry (arguments),
Niestety nie znalazłem jakie ( a czytałem dokumentację )
Lub używam niewłaściwej metody..... Może jest jakaś inna co otwiera dokumenty openoffice w nowym oknie wg parametrów ze string.
3) czy jest jaka metoda zawracająca w formie stringa, adres zaznaczonej komórki (oCell) np ”c7"
Proszę o wyrozumiałość za brak doświadczenia
Mam zerowe doświadczenie w basic natomiast umiem programować w innych językach.....
Dziękuje za jakiekolwiek porady.
To mój pierwszy wpis , a za razem pierwsze makro w basic.
Napotkałem 2 problemy których nie potrafię obecnie rozwiązać , a także nie znalazłem rozwiązania w necie.
1) jak pobrać w firmie stringa adres url ( ”filie:/// " jest to adres do pliku - osobny plik w openoffice)
Dodam iż adres ten jest wynikiem działania formuły który składa teksty, z innych komórek i tworzy odnośnik do pliku.
Reguła wygląda miej więcej tak =jeżeli(c7>1;hiperłącze(złącz.teksty(...........);"moja nazwa linku");"nic")
Umiem jedynie pobrać "moja nazwa linku" .......
2) używam metody StarDestop() od otwierania dokumentów które odczytuje z linków i to działa prawie dobrze....
Dokumnety wskazane linkiem otwierają się jednakże nie aktualizują wartości z innych dokumnetów.
(Jak totwieram klikając na link w dokumencie źródłowym to działa poprawnie , Klikam i się aktualizują odnośniki z innych dokumnetów), wiec podejrzewam iż w parametrach wywołania StarDesktop() mają być przekazane jakieś parametry (arguments),
Niestety nie znalazłem jakie ( a czytałem dokumentację )
Lub używam niewłaściwej metody..... Może jest jakaś inna co otwiera dokumenty openoffice w nowym oknie wg parametrów ze string.
3) czy jest jaka metoda zawracająca w formie stringa, adres zaznaczonej komórki (oCell) np ”c7"
Proszę o wyrozumiałość za brak doświadczenia
Mam zerowe doświadczenie w basic natomiast umiem programować w innych językach.....
Dziękuje za jakiekolwiek porady.
OpenOffice 4.1 na OS X / Windows 8/10/Vista
Re: Hyperlink /starDesktop
1.
2,
Sprawdzam
3.
Kod: Zaznacz cały
sString = oCell.String
Sprawdzam
3.
Kod: Zaznacz cały
Sub AdresZaznaczonejKom
'Dwie możliwości
'Z poniższego stringu możesz wydobyć sobie tylko adres komórki (bez nazwy arkusza) używając wbudowanych funkcji basica
Print ThisComponent.getCurrentSelection().AbsoluteName
'lub, indeksy zaczynają się od 0
'więc komórka A1 w pierwszym od lewej arkuszu
'będzie miała indeksy
' wiersz 0 kolumna 0 w arkudzu 0
Print "Kolunna o indeksie " & ThisComponent.getCurrentSelection().getCellAddress().Column
Print "Wiersz o indeksie " & ThisComponent.getCurrentSelection().getCellAddress().Row
Print "Arkusz o indeksie " & ThisComponent.getCurrentSelection().getCellAddress().Sheet
End Sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
mam zaznaczone "na żądanie"
Prz ręcznym klikaniu na link w arkuszu pojawia się okno dialogowe "czy chcę aktualizować...."
przy otwieraniu makrem tego nie ma, i łącza się nie aktualizują..... chciałby aby tak pozostało gdyż są to ogólne opcje dla wszystkich arkuszy.
Dla potrzeb wiedzy mogę sprawdzić czy ta po zaznaczeniu "zawsze" łącza będą się aktualizowały" ale jeśli nawet to nie rozwiązuje to problemu.....
odnośnie pkt 1 twoja metoda zwraca string ale nie url tylko "nazwę użytkownika" także problem nadal jest...
Prz ręcznym klikaniu na link w arkuszu pojawia się okno dialogowe "czy chcę aktualizować...."
przy otwieraniu makrem tego nie ma, i łącza się nie aktualizują..... chciałby aby tak pozostało gdyż są to ogólne opcje dla wszystkich arkuszy.
Dla potrzeb wiedzy mogę sprawdzić czy ta po zaznaczeniu "zawsze" łącza będą się aktualizowały" ale jeśli nawet to nie rozwiązuje to problemu.....
odnośnie pkt 1 twoja metoda zwraca string ale nie url tylko "nazwę użytkownika" także problem nadal jest...
OpenOffice 4.1 na OS X / Windows 8/10/Vista
Re: Hyperlink /starDesktop
1.Wstaw formułę i to co zwraca formuła.
2. Wstaw to makro
2. Wstaw to makro
LibreOffice 5.1.2.2 Ubuntu 16 LTS
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
proszę
formuła:
komórka c7=1
wynik wyświetlany w arkuszu
link-kliknij
i to mi właśnie zwraca ta metoda
a tu jest moje makro podpiete do przycisku na formularzu
jest troche balaganu ale to moj pierwszy raz
formuła:
Kod: Zaznacz cały
=JEŻELI(C7=1;HIPERŁĄCZE(ZŁĄCZ.TEKSTY("file:///users/mariuszslonina/desktop/fakturowanie/faktury/faktura ";B7;".xls");"link-kliknij");ZŁĄCZ.TEKSTY("-";" "))
wynik wyświetlany w arkuszu
link-kliknij
i to mi właśnie zwraca ta metoda
a tu jest moje makro podpiete do przycisku na formularzu
Kod: Zaznacz cały
Sub Main
'Sub ZmienWartoscKomorki
Dim oDocument As Object, oSheet As Object, oCell As Object
Dim oRow(), oRows(), oCells()
Dim iRow As Integer
Dim Zmienna1 As Integer
Dim ZmiennaUrl As String
Dim oTextField
Dim NazwaCeli As String
oDocument=ThisComponent 'wybór obiektu(w VBA odpowiednikiem będzie Selection)
oSheet=oDocument.Sheets.getByName("Arkusz1") 'wyróżnienie arkusza nr1
'oCell.xecuteDispatch(document, ".uno:Open", "", 0, Array())
Zmienna1=0
oCell=oSheet.getCellByPosition(0,0)
oCell.setValue("Liczę")
wait(2000)
'oCells = oSheet.getCellRangeByName("C7:C35")
'oRows() = oCells.getData()
'For iRow = LBound(oRows()) To UBound(oRows())
' oRow() = oRows(iRow)
For iRow=6 To iRow+50
oCell = oSheet.getCellByPosition(2,iRow)
If oCell.getValue()=1 Then
Zmienna1=Zmienna1+1
oCell=oSheet.getCellByPosition(0,0)
oCell.setValue(Zmienna1)
wait(50)
oCell=oSheet.getCellByPosition(0,iRow)
NazwaCeli = oCell.String
' NazwaCeli= oCell.getCellName()
NazwaCeli=ThisComponent.getCurrentSelection(oCell).AbsoluteName
'NazwaCeli=ThisComponent.getCurrentSelection().getCellAddress().Sheet
oCell = oSheet.getCellRangeByName(NazwaCeli)
RunUrlLink(oCell.String)
'oCell.getCellByPosition(0,iRow)
'FollowHyperlink(oCell(0,iRow).getValue())' As Hyperlink)
Endif
Next
Print "Sprwadz otwarte dokumnety -> " & Zmienna1
oCell=oSheet.getCellByPosition(0,0) 'wyróżnienie komórki A1
oCell.setValue(Zmienna1)
'If x(iRow, iCol)>0 Then
'Zmienna1=Zmienna1+1
'Next
'oCell=oSheet.getCellByPosition(0,0) 'wyróżnienie komórki A1
'oCell.setValue(Zmienna1)
'Dim TheSum As Double
' Dim iRow As Integer
' Dim iCol As Integer
' TheSum = 0.0
' If NOT IsMissing(x) Then
' If NOT IsArray(x) Then
' If x > 0 Then TheSum = x
' Else
' For iRow = LBound(x, 1) To UBound(x, 1)
' For iCol = LBound(x, 2) To UBound(x, 2)
' If x(iRow, iCol) > 0 Then TheSum = TheSum + x(iRow, iCol)
'Next Next
'End If End If
' PositiveSum = TheSum
'oCell=oSheet.getCellByPosition(0,0) 'wyróżnienie komórki A1
'oCell.setValue(23658) 'wpisanie wartości liczbowej do wyróżnionej komórki
'oCell.NumberFormat=2 'określenienie sposobu prezentacji liczby (23658,00)
'oCell.SetString("oops") 'wpisanie łańcucha tekstowego do wyróżnionej komórki
'oCell.setFormula("=FUNCTION()") 'wpisanie formuły do wyróżnionej komórki
'oCell.IsCellBackgroundTransparent = TRUE 'określenienie ...?
'oCell.CellBackColor = RGB(255,141,56) 'określenienie koloru dla tła w komórce
End Sub
Function RunUrlLink(param As String)
Dim SysShell As Object
'param="file:///users/mariuszslonina/desktop/fakturowanie/faktury/faktura ESW.xls"
'SysShell = createUNOService("com.sun.star.system.SystemShellExecute",param)
StarDesktop.loadComponentFromURL(param,"_blank",0,Array())
'SysShell.execute("Macintosh HD/Programy/OpenOffice.app",0,0)
End Function
OpenOffice 4.1 na OS X / Windows 8/10/Vista
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
Idea makra jest nastepująca
po jego wywołaniu ma w pętli for przjrzeć wskazany zakres komórek i tam gdzie znajdzie jedynkę , z tego samego wiersza (z innej kolumny) ma pobrać wygenerowany link (wg formuły) i odpalić wskazany dokument w nowym oknie, a ten dokument (odpalony) ma zaciągnąc dane z innego dokumentu
mam problemy tak jak napisałem w pierwszym poście
pkt 1,2,3
po jego wywołaniu ma w pętli for przjrzeć wskazany zakres komórek i tam gdzie znajdzie jedynkę , z tego samego wiersza (z innej kolumny) ma pobrać wygenerowany link (wg formuły) i odpalić wskazany dokument w nowym oknie, a ten dokument (odpalony) ma zaciągnąc dane z innego dokumentu
mam problemy tak jak napisałem w pierwszym poście
pkt 1,2,3
OpenOffice 4.1 na OS X / Windows 8/10/Vista
Re: Hyperlink /starDesktop
No to jest ciekawe, rzeczywiście oCell.String zwraca to co jest w komórce i to jest prawidłowe. Ale np.
powinno zwrócić link jaki jest zaszyty w formule, a zwraca pusty ciąg.
Na ten czas spróbuj wykorzystać to:
i wyodrębnij sobie adres funkcjami basica, ja zaś przyjże się temu bliżej.
Kod: Zaznacz cały
Sub H_Link
Print ThisComponent.getSheets().getByName("Arkusz1").getCellRangeByName("A4").Hyperlink
End Sub
Na ten czas spróbuj wykorzystać to:
Kod: Zaznacz cały
Sub H_Link
Print ThisComponent.getSheets().getByName("Arkusz1").getCellRangeByName("A4").getFormula()
End Sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
dla wiedzy. ustawienie opcji aby zawsze uaktualniał łącza w opcjach ogólnych nie pomogła, a to jest dla mnie najważniejszy problem.....
OpenOffice 4.1 na OS X / Windows 8/10/Vista
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
Poradziłem sobie z problemem nr 3, problem 1 jest do obejścia innymi drogami,
Natomiast problem nr2 jest dla mnie palący.....
Natomiast problem nr2 jest dla mnie palący.....
OpenOffice 4.1 na OS X / Windows 8/10/Vista
Re: Hyperlink /starDesktop
No to się pochwal, inni skorzystają.mariuszelectro pisze:Poradziłem sobie z problemem nr 3
Co się stanie jak po otwarciu dokumentu wciśniesz Ctrl+Shift+F9, czy łącza są aktualizowane?mariuszelectro pisze:Natomiast problem nr2 jest dla mnie palący.....
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Hyperlink /starDesktop
Mówiąc z pamięci, API struktury dokumentu winno mieć funkcję aktualizacji linku. Być może, o ile nie da się inaczej, trzeba jakimś iteratorem przejrzeć linki w dokumencie i po kolei je aktualizować. A być może API wyższego poziomu, związane z interfejsem programu, ma taką funkcję gotową.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Hyperlink /starDesktop
Spróbuj dwóch opcji, zamiast funkcji jest procedura, ale myślę że to nie problem:
Kod: Zaznacz cały
Sub RunUrlLink(param As String)
Dim SysShell As Object
' param="/home/slav/Dokumenty/Calc/test łącza.ods"
' param = ConvertToUrl(param)
'SysShell = createUNOService("com.sun.star.system.SystemShellExecute",param)
otestLink = StarDesktop.loadComponentFromURL(param,"_blank",0,Array())
'SysShell.execute("Macintosh HD/Programy/OpenOffice.app",0,0)
'reLinks(otestLink)
reLinks_1(otestLink)
End Sub
sub reLinks(oObject)
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = oObject.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
'dispatcher.executeDispatch(document, ".uno:EditLinks", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:UpdateLinks", "", 0, Array())
end sub
Sub reLinks_1(oObject)
oIter = oObject.ExternalDocLinks.createEnumeration
while oIter.hasMoreElements
oLink = oIter.NextElement
oLink.refresh
wend
oIter = oObject.DDELinks.createEnumeration
while oIter.hasMoreElements
oLink = oIter.NextElement
oLink.refresh
wend
End Sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
Ponieważ używam Mac to tam sa chyba inne kombinacje klawiszy (nie znam ich)belstar pisze:No to się pochwal, inni skorzystają.mariuszelectro pisze:Poradziłem sobie z problemem nr 3
poniważ robię to czysto amatorsko wany jest dla mnie skutek zastosowałem inna metodę dosteępugdzie iRow jest incremntowane w pętli forKod: Zaznacz cały
oCell=oSheet.getCellByPosition(0,iRow) RunUrlLink(oCell.String)
Kod: Zaznacz cały
Function RunUrlLink(param As String) Dim SysShell As Object If(InStr(param,"file:///")>0) Then StarDesktop.loadComponentFromURL(param,"_blank",0,Array()) Else Print "to nie jest link" Endif End Function
Co się stanie jak po otwarciu dokumentu wciśniesz Ctrl+Shift+F9, czy łącza są aktualizowane?mariuszelectro pisze:Natomiast problem nr2 jest dla mnie palący.....
Ale jak użyję :
Edytuj->Łącza->Aktualizuj (wskazuje plik źródłowy) to działa prawidłowo i aktualizują się dane.....
nie mogę ta zrobić ponieważ dokumenty w których są odnośniki do dokumentu źródłowego nie mogą zawierać makr (no nie powinny), a poza tym jest ich ok 100 .... (obecnie)Jan_J pisze:Mówiąc z pamięci, API struktury dokumentu winno mieć funkcję aktualizacji linku. Być może, o ile nie da się inaczej, trzeba jakimś iteratorem przejrzeć linki w dokumencie i po kolei je aktualizować. A być może API wyższego poziomu, związane z interfejsem programu, ma taką funkcję gotową.
dziękuję, jutro wypróbuję i dam znać czy pomogło.....belstar pisze:Spróbuj dwóch opcji, zamiast funkcji jest procedura, ale myślę że to nie problem:
Kod: Zaznacz cały
Sub RunUrlLink(param As String) Dim SysShell As Object ' param="/home/slav/Dokumenty/Calc/test łącza.ods" ' param = ConvertToUrl(param) 'SysShell = createUNOService("com.sun.star.system.SystemShellExecute",param) otestLink = StarDesktop.loadComponentFromURL(param,"_blank",0,Array()) 'SysShell.execute("Macintosh HD/Programy/OpenOffice.app",0,0) 'reLinks(otestLink) reLinks_1(otestLink) End Sub sub reLinks(oObject) rem ---------------------------------------------------------------------- rem define variables dim document as object dim dispatcher as object rem ---------------------------------------------------------------------- rem get access to the document document = oObject.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") rem ---------------------------------------------------------------------- 'dispatcher.executeDispatch(document, ".uno:EditLinks", "", 0, Array()) dispatcher.executeDispatch(document, ".uno:UpdateLinks", "", 0, Array()) end sub Sub reLinks_1(oObject) oIter = oObject.ExternalDocLinks.createEnumeration while oIter.hasMoreElements oLink = oIter.NextElement oLink.refresh wend oIter = oObject.DDELinks.createEnumeration while oIter.hasMoreElements oLink = oIter.NextElement oLink.refresh wend End Sub
OpenOffice 4.1 na OS X / Windows 8/10/Vista
Re: Hyperlink /starDesktop
Makro nie musi być osadzone w dokumencie, którego dotyczy.
@belstar zaproponował zgrabne podprogramy, których funkcjonalność opisałem wyżej: iterator wywołujący funkcje OpenDocument API oraz wykorzystanie dispatchera UNO do aktualizacji wskazanego dokumentu.
@belstar zaproponował zgrabne podprogramy, których funkcjonalność opisałem wyżej: iterator wywołujący funkcje OpenDocument API oraz wykorzystanie dispatchera UNO do aktualizacji wskazanego dokumentu.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
witam ponownie.
jak rozumiem te procedury wklejam do swojego makra i wywołuje je w swojej funkcji jako reLinks() lub reLinks_1
tak zrobiłem i w obu procedurach linki nie aktualizują się.
przy w reLinks_1 czym zgłasza problem "nie znaleziono metody refresh" na linijce kodu:
oLink.refresh
nie jestem expertem (zajmuję się tym od zaledwie 1h) ale nie widzę deklaracji zmiennych lub obiektów
typu:
oIter, oLink, otestLink
nie wie m jak jest w tym języku, czyżby zmienne/obiektu były powoływane lokalnie i typ zmiennej był nadawany przez pierwsze podstawienie ....?
tak to wygląda....
jak rozumiem te procedury wklejam do swojego makra i wywołuje je w swojej funkcji jako reLinks() lub reLinks_1
tak zrobiłem i w obu procedurach linki nie aktualizują się.
przy w reLinks_1 czym zgłasza problem "nie znaleziono metody refresh" na linijce kodu:
oLink.refresh
nie jestem expertem (zajmuję się tym od zaledwie 1h) ale nie widzę deklaracji zmiennych lub obiektów
typu:
oIter, oLink, otestLink
nie wie m jak jest w tym języku, czyżby zmienne/obiektu były powoływane lokalnie i typ zmiennej był nadawany przez pierwsze podstawienie ....?
tak to wygląda....
OpenOffice 4.1 na OS X / Windows 8/10/Vista
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
może problemem aktualizacji linków jest to iż otwierane dokumenty odwołują się do dokumentu z którego jest wywoływane makro? (tam są dane źródłowe)
OpenOffice 4.1 na OS X / Windows 8/10/Vista
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
ciekawym jest fakt iż przy tradycyjnym klikaniu na link, jak się otwiera dokument to jest okno dialogowe informujące o możliwości aktualizacji, a przy wywołaniu makrem tego nie ma....
jutro spróbuję zrobić ekstra dokument gdzie źródłem danych będzie inny plik.....
zrobiłem test dziś, też nie działa.......
jutro spróbuję zrobić ekstra dokument gdzie źródłem danych będzie inny plik.....
zrobiłem test dziś, też nie działa.......
OpenOffice 4.1 na OS X / Windows 8/10/Vista
Re: Hyperlink /starDesktop
Być może problem z błędami wynika z tego że ja używam LO a ty według podpisu OO. Jutro sprawdzę na OO, a pliki wstaw będzie pomocne.
Nie ma to znaczenia, bo basic sam je deklaruje jako Variantmariuszelectro pisze:nie jestem expertem (zajmuję się tym od zaledwie 1h) ale nie widzę deklaracji zmiennych lub obiektów
typu:
oIter, oLink, otestLink
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Hyperlink /starDesktop
U mnie na linuxie z AOO 4.0.1 ze stworzonymi do testów plikami działa, także czekam na twoje pliki.mariuszelectro pisze:przy w reLinks_1 czym zgłasza problem "nie znaleziono metody refresh" na linijce kodu:
Tymczasem odkomentuj sobie:
Kod: Zaznacz cały
dispatcher.executeDispatch(document, ".uno:EditLinks", "", 0, Array())
LibreOffice 5.1.2.2 Ubuntu 16 LTS
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
witam ponownie zrobiłem specjalnie pliki dla demonstracji (są wykastrowane do minimum) i na OsX u mnie nie działają
załączam do przejrzenia
dokumentem źródłowym jest testmacro, a dokumentem linkowanym jest "faktura nic1.xls"
w dokumnecie źródlowym są trze metody tworzenia linków
1) jako formatowanie warunkowe metodą złącz teksty z nazwą użytkownika również składaną jako taksy (nie udaje się pobrać adresu url a jedynie nazwę użytkownika
2) w tej metodzie nazwa użytkownika jest składany tak samo jak link źródłowy, tu udaje sie pobrac link i otworzyć dokument.
3) klasyczny lik do pliku utworzony poprzez wstaw hiperlącze.
makro jest natomiast troche posiekane ale poniewż chodzi o tu o zasad aktualizacji linków więc jest na sztywno wpisany docelowy dokument (" z palca")
swoją drogą przetestuję to na innym systemie operacyjnym i dam znać jak wyniki testów się powiodły
załączam do przejrzenia
dokumentem źródłowym jest testmacro, a dokumentem linkowanym jest "faktura nic1.xls"
w dokumnecie źródlowym są trze metody tworzenia linków
1) jako formatowanie warunkowe metodą złącz teksty z nazwą użytkownika również składaną jako taksy (nie udaje się pobrać adresu url a jedynie nazwę użytkownika
2) w tej metodzie nazwa użytkownika jest składany tak samo jak link źródłowy, tu udaje sie pobrac link i otworzyć dokument.
3) klasyczny lik do pliku utworzony poprzez wstaw hiperlącze.
makro jest natomiast troche posiekane ale poniewż chodzi o tu o zasad aktualizacji linków więc jest na sztywno wpisany docelowy dokument (" z palca")
swoją drogą przetestuję to na innym systemie operacyjnym i dam znać jak wyniki testów się powiodły
- Załączniki
-
- testMacro.zip
- (8.62 KiB) Pobrany 204 razy
OpenOffice 4.1 na OS X / Windows 8/10/Vista
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
tak własnie zauważyłem, nie wiem jak dodać takie makra do pliku, oraz nie wiem gdzie są one przechowywane na dysku.....
OpenOffice 4.1 na OS X / Windows 8/10/Vista
Re: Hyperlink /starDesktop
Problem w tym że zapisujesz plik z makrem jako xls.
LibreOffice 5.1.2.2 Ubuntu 16 LTS
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
tzn iz muszę zapisac to makro w natywnym formacie openoffice - wtedy będzie przenoszalne jako jeden plik ?
OpenOffice 4.1 na OS X / Windows 8/10/Vista
Re: Hyperlink /starDesktop
Przejrzyj te pliki może coś ci z tego wyjdzie. Rzeczywiście po otwarciu pliku excela dokument nie ma metody Refresh a więc pozostaje wykonywać makro dispatchera UNO czyli reLinks(), przynajmniej do czasu wyjaśnienia sytuacji (jutro powalczę). Opcja druga zapis do .ods
- Załączniki
-
- Hyper_Link.zip
- (23.4 KiB) Pobrany 177 razy
LibreOffice 5.1.2.2 Ubuntu 16 LTS
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
przetestowałem po windows,nie działa.
załączam pliki zawierające makro (zapisane w ods)
w makro jest na sztywno zapisana scieżka którą trzeba zmodyfikować wg własnego położenia folderu.
załączam pliki zawierające makro (zapisane w ods)
w makro jest na sztywno zapisana scieżka którą trzeba zmodyfikować wg własnego położenia folderu.
- Załączniki
-
- testMacro.zip
- (22.44 KiB) Pobrany 211 razy
OpenOffice 4.1 na OS X / Windows 8/10/Vista
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
twoje makra działają,belstar pisze:Przejrzyj te pliki może coś ci z tego wyjdzie. Rzeczywiście po otwarciu pliku excela dokument nie ma metody Refresh a więc pozostaje wykonywać makro dispatchera UNO czyli reLinks(), przynajmniej do czasu wyjaśnienia sytuacji (jutro powalczę). Opcja druga zapis do .ods
będę to analizował, dzięki za materiał do dalszej pracy
OpenOffice 4.1 na OS X / Windows 8/10/Vista
-
- Posty: 22
- Rejestracja: pn lut 29, 2016 1:53 pm
Re: Hyperlink /starDesktop
Bardzo dziękuję za pomoc.
Przeanalizowałem twój kod (sporo się nauczyłem)
zastosowałem do do swojego makra i działa
okazuje się iż na moje początki pracy z makrami rzutują inne języki programowania, i miałem niewłaściwą konstrukcję całego dokumentu(makra) procedury wewnątrz procedur (jestem zbyt początkujący)
co zauważyłem analizując prawidłowy kod.........
mam jeszcze jedno pytanko.
jak przechwycić zdarzenie iż np wskazany (w linku) dokument nie istnieje lub nie da się otworzyć?
oraz jak po przechwyceniu takiego wyjątku powrócić do wykonywania makra?
jak przekazać parametr do linkowanego dokumentu aby aktualizacja była automatyczna, a nie ręczna?
dziękuję jeszcze raz za pomoc i cierpliwość
Przeanalizowałem twój kod (sporo się nauczyłem)
zastosowałem do do swojego makra i działa
okazuje się iż na moje początki pracy z makrami rzutują inne języki programowania, i miałem niewłaściwą konstrukcję całego dokumentu(makra) procedury wewnątrz procedur (jestem zbyt początkujący)
co zauważyłem analizując prawidłowy kod.........
mam jeszcze jedno pytanko.
jak przechwycić zdarzenie iż np wskazany (w linku) dokument nie istnieje lub nie da się otworzyć?
oraz jak po przechwyceniu takiego wyjątku powrócić do wykonywania makra?
jak przekazać parametr do linkowanego dokumentu aby aktualizacja była automatyczna, a nie ręczna?
dziękuję jeszcze raz za pomoc i cierpliwość
OpenOffice 4.1 na OS X / Windows 8/10/Vista
Re: Hyperlink /starDesktop
Przed próbą otwarcia wykonać np. takie makro i podjąć odpowiednią decyzje.mariuszelectro pisze:jak przechwycić zdarzenie iż np wskazany (w linku) dokument nie istnieje
Kod: Zaznacz cały
Sub oPlikIstnieje
Dim oFromFile
Dim oFromURL
oFromFile = "C:\temp\test.csv"
oFromURL = ConvertToUrl(oFromFile)
If FileExists(oFromURL) then
MsgBox( oFromFile & " Istnieje", 0, "Plik istnieje")
else
MsgBox( oFromFile & " Nie istnieje", 0, "Uwaga !!")
End If
End Sub
Obsługa błędów:mariuszelectro pisze:lub nie da się otworzyć?
https://wiki.openoffice.org/wiki/Docume ... r_Handling
Np. to co wyżej, sekcja: The Resume Commandmariuszelectro pisze:oraz jak po przechwyceniu takiego wyjątku powrócić do wykonywania makra?
Jeśli jest xls to chyba tylko ręczna, przy ods można powalczyć tzn. wykonać makro z metodą refresh to co powodowało wyjątekmariuszelectro pisze:jak przekazać parametr do linkowanego dokumentu aby aktualizacja była automatyczna, a nie ręczna?
LibreOffice 5.1.2.2 Ubuntu 16 LTS