Seite 1 von 1

Re: Verknüpfung zu externen Daten nach Zellwert

Verfasst: So, 24.07.2016 06:45
von clag
Hallo Micha*,

habe in deinen Code ein paar Zeilen eingefügt
und für die Tabelle "Auswertung "das Tabellenereignis "Inhalt geändert" aktiviert und mit dem Makro verknüpft.
Das Makro wird aber nur vollständig ausgeführt wenn der Trigger in "A2" war.

Code: Alles auswählen

REM ***** BASIC *****
'Einen Bereich aus einer Internetseite,
'oder eine gesammte Internetseite importieren.


Sub Add_HTML_AreaLink(event)
 if event.AbsoluteName = "$Auswertung.$A$2" then  '----------------- Makro nur ausführen wenn Änderung in A2  
 dim oDoc As object
 Dim oSheet As Object
 Dim oCellAddress As Object
 dim n AS Integer
 Dim sURL$, sSource$,sFilterName$ ,sFilterOptions$ '$ steht für String.
 oDoc=ThisComponent
' Geschwindigkeit erhöhen.  
 oDoc.LockControllers  
' oDoc.AddActionLock         '-------------------------------------- das nutzt nicht viel, stört eher, darum auskommentiert

' Ziel-Tabelle des AreaLinks.
 oSheet = oDoc.Sheets.GetByName("Auswertung")
' Start-Zelle des AreaLinks
 oCellAddress = oSheet.getCellRangeByName("A10").CellAddress
' Die Quell-Internetadresse.
' sURL = "http://www.wahretabelle.de/statistik/"&_
' "heimgasttabelle?spieltag=15&saisonId=205"
 Dim iDay as integer
 iDay = oSheet.getCellRangeByName("B4").value -1   '---------------- Zahl in B4 lesen 1 sutrahieren, in Variable übernehmen 
 if iDay >= 1 and iDay <= 34 then                  ' --------------- prüfen ob Zahl iDay im möglichen Bereich 
  sURL = "http://www.wahretabelle.de/statistik/"&_
  "heimgasttabelle?spieltag="&iDay &"&saisonId=205" ' -------------- die Variable in den String für den Link einsetzen 
' Der zu importierende Bereich.
  sSource = "HTML_1;HTML_2"
'  Filter und Filter-Optionen.
'  Alle verfügbaren Filter und Filter-Optionen findet man hier:
'  http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/Spreadsheets/Filter_Options
  sFilterName = "calc_HTML_WebQuery"
  sFilterOptions = ""
'  Zugriff auf alle AreaLinks.
   oLinks = oDoc.AreaLinks
 end if

On Error Goto ErrorHandler 'Bei Fehler zur Zeile "ErrorHandler:" gehen.
'Den neuen AreaLink einfügen.
oLinks.insertAtPosition (oCellAddress, sUrl, sSource, sFilterName, sFilterOptions)
'Optional: Die Verknüpfung zu dem Link wieder entfernen.
'Der Inhalt bleibt bestehen, wird aber nicht mehr automatisch beim Neuladen aktualisiert.
'Da der AreaLink zuletzt eingefügt wurde, hat es den höchsten Index "oLinks.getcount-1"
'(Höchster Index ist immer (Anzahl -1), da die Indices immer bei 0 anfangen.)
oLinks.removeByIndex(oLinks.getcount-1)
'Entfernen des ControllerLocks, und des ActionLocks,
'damit man das Dokument wieder bearbeiten kann.
oDoc.UnlockControllers
'oDoc.removeActionLock ' ------------------------------------------- auskommentiert
Exit Sub ' Sub verlassen.
ErrorHandler: ' Fehler Behandlung
MsgBox "Der Link konnte nicht eingefügt werden" ,16, "Fehler"
oDoc.UnlockControllers
'oDoc.removeActionLock ' ------------------------------------------- auskommentiert
end if
end sub
soccer.ods
(15.62 KiB) 63-mal heruntergeladen
viel Erfolg

Re: Verknüpfung zu externen Daten nach Zellwert

Verfasst: So, 24.07.2016 14:55
von clag
Hallo Micha*,

meine Beispieldatei funktioniert bei dir?

wenn das Makro nicht startet hast du vermutlich vergessen unter
Tabellenreiter > rechte Maustaste > Tabellenereignisse.. > Inhalt geändert > Makro
das Makro diesem Ereignis zuzuordnen.

Darum hatte ich das Beispiel angehängt, damit man/ du da nachsehen kannst wie es geht.