von clag » So, 24.07.2016 06:45
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
viel Erfolg
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]
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[/code]
[attachment=0]soccer.ods[/attachment]
viel Erfolg