Lista hiperłączy do arkuszy (konwersja makra VBA > OOBasic)

Makropolecenia i funkcje w języku Basic

Lista hiperłączy do arkuszy (konwersja makra VBA > OOBasic)

Postprzez wuj_stach » Pt kwi 27, 2012 10:09 am

Witam,

To ja jeszcze raz z podobnym problemem, tym razem prośba o pomoc przy przeróbce takiego makra(tworzy spis Arkuszy wraz z hiperłączami do Arkuszy):

Kod: Zaznacz cały   Rozszerz widokZwiń widok
Sub Zrób_Listę_Hiperłączy_do_Arkuszy()
  Const Spis = "Spis arkuszy"
 
  Dim sh As Worksheet
  Dim w As Integer
 
  'przejscie do arkusza ze spisem i ewentualne jego utworzenie
  On Error Resume Next
  Worksheets(Spis).Select
  If Err > 0 Then
        Worksheets.Add Before:=Sheets(1)
        ActiveSheet.Name = Spis
  End If
  On Error GoTo 0
 
  'wpisanie listy arkuszy
  Cells.Clear
  Worksheets(Spis).Cells(1, 1) = Spis
  w = 1
  For Each sh In Worksheets
        If sh.Name <> Spis Then
        w = w + 1
                With Worksheets(Spis)
                         .Hyperlinks.Add .Cells(w, 1), "", "'" & sh.Name & "'!A1", , sh.Name
                End With
        End If
  Next sh
End Sub


Z góry wielkie dzięki za pomoc.
Ostatnio edytowano Pt kwi 27, 2012 1:45 pm przez Jan_J, łącznie edytowano 1 raz
Powód: Dla nowego tematu zakładamy nowy wątek. W tytule opisujemy problem
OpenOffice 3.2 pod Ubuntu 10.04
wuj_stach
 
Posty: 4
Dołączył(a): Pt paź 29, 2010 4:18 pm

Re: Lista hiperłączy do arkuszy (konwersja makra VBA > OOBas

Postprzez Jan_J » Pn kwi 30, 2012 1:29 pm

Chyba o to ci chodzi:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
Sub robiHipertekstowySpisArkuszy()
   nazwaSpis = "Spis arkuszy"
   doc = thisComponent
   arks = doc.Sheets
   on error goto wstaw_spis
   ark = arks.getByName(nazwaSpis)
   goto wstaw_linki:
  wstaw_spis:
   arks.insertNewByName(nazwaSpis, 0)
   ark = arks.getByName(nazwaSpis)
  wstaw_linki:
   on error goto blad
   ark.getCellRangeByPosition(0,0,0,1000).clearContents(-1) 'czyści kolumnę A w spisie
   ark.getCellByPosition(0,0).setString(nazwaSpis)
   j = 0
   for i = 0 to arks.Count-1
     a = arks.getByIndex(i)
     aName = a.Name
     if aName <> nazwaSpis then
       j = j+1
       wstawiaLinkDoKomorki(doc, ark.getCellByPosition(0,j), aName, "#" & aName)
     end if
   next i
   goto koniec
  blad:
   print("Błąd podczas wstawiania łączy")
  koniec:
End Sub

Sub wstawiaLinkDoKomorki(dokument, komorka, tekst, adres)
   text = komorka.getText()
   lnk = dokument.createInstance("com.sun.star.text.TextField.URL")
   lnk.URL = adres
   lnk.Representation = tekst
   komorka.insertTextContent(text.createTextCursor(), lnk, True)
End Sub
Prawie słowo w słowo. Patrz też http://www.oooforum.org/forum/viewtopic.phtml?t=63158 i standardowa literatura do OOo API: http://www.openoffice.org/api/, http://www.openoffice.org/api/basic/man ... torial.pdf, http://www.pitonyak.org/AndrewMacro.odt, http://www.pitonyak.org/OOME_3_0.pdf
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3906
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Lista hiperłączy do arkuszy (konwersja makra VBA > OOBas

Postprzez wuj_stach » Pn maja 07, 2012 11:31 am

Dzięki właśnie o to mi chodziło. Wszystko działa jak należy.
OpenOffice 3.2 pod Ubuntu 10.04
wuj_stach
 
Posty: 4
Dołączył(a): Pt paź 29, 2010 4:18 pm


Powrót do Basic

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość