Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

Re: Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

von turtle47 » Mo, 22.02.2010 07:41

Hallo Zusammen,
balu hat geschrieben:Jedoch, möchte ich es noch etwas "Komfortabler" haben. Ja ja, ich weiss! Keine Ahnung von der Materie, aber nach noch mehr verlangen wollen, tztztz.
Es gibt nichts Schlechtes was nicht auch was Gutes für sich hat. :o

Mir hat sich nämlich jetzt folgendes erschlossen:
Wenn man die Funktion so wie Karolus über Zeile, Spalte usw. schreibt, dann aktualisiert sich der Zellinhalt automatisch, wenn sich die "Prüfziffer" ändert. Also Strg+Shift+F9 kann entfallen. :lol:


Einen erfolgreichen Wochenstart wünsche ich.

Jürgen

Re: Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

von balu » Mo, 22.02.2010 01:46

Hallo Leute,

für all diejenigen die irgendwann einmal auf diesen Beitrag stoßen, sei noch mal eben die Parameterbelegung von

Code: Alles auswählen

=HYPERADRESSE(SPALTE(A2);SPALTE(C2);ZEILE(A2))
kurz erklärt.

SPALTE(A2) ist die Spalte mit dem formatiertem Hyperlink
SPALTE(C2) ist die Spalte mit der Prüfziffer
ZEILE(A2) ist die Zeile in der sich beide Zellen befinden müssen.

Bei SPALTE spielt die Zeilennummer keine Rolle. Wichtig ist der Spaltenname, da dadurch die Spaltennummer defeniert wird.
Und bei ZEILE verhält es sich genau andersrum.

Daraus folgt dann; das die auszulesende Zelle mit dem Hyperlink sich in der gleichen Zeile befinden muss, wie die Zelle mit der Püfziffer. Die Spaltendifferenz spielt keine Rolle, sie kann ein, oder mehrere Spalten weit auseinander sein.

Ich hoffe das es verständlich ist.

Mit dieser kurzen Erklärung wollte ich mich noch mal bei Jürgen und Karo für ihre Hilfe bedanken.
Danke Jungs :D
Das war ich euch schuldig.


Gruß
balu

Re: Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

von balu » Mo, 22.02.2010 00:04

Hallo Karo,
edit:
Fehler beseitigt!
Nicht ganz. Du hattest die Variablen nicht ganz richtig defeniert (oder so).
Richtig muss es wohl heißen

Code: Alles auswählen

Function HyperAdresse ( hyp_col as Integer , Check_col as Integer , irow as Integer )
Mit was anderem als "Integer" habe ich jetzt nicht getestet.

Kurz und gut.
Das Ergebnis ist jetzt Göttlich. Es funzt so wie ich es mir gewünscht hatte. Ich bin echt Häppy :mrgreen:.
Respekt, und ein dickes Herzliches Dankeschön an dich :D


Gruß
balu

Re: Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

von Karolus » So, 21.02.2010 23:23

Hallo
Damit ich hier auch mal was sinnvolles beitrage:

Code: Alles auswählen

Function HyperAdresse ( hyp_col as int , Check_col as int , irow as int )
   oBlatt = ThisComponent.Sheets().getByName( "Tabelle1" )
   oZelle_Check = oBlatt.getCellByposition(check_col -1 , irow -1 ).value
   if oZelle_Check = 1 then
   oZelle = oBlatt.getCellByPosition( hyp_col -1 , irow -1)
   HyperAdresse = ConvertFromURL(oZelle.getTextFields().getByIndex(0).URL)
   else
   HyperAdresse = ""
   end if
End Function
Aufrufsyntax in Calc:
=HYPERADRESSE(SPALTE(A2);SPALTE(C2);ZEILE(A2))

dies kannst du ohne Hilfszellen einfach nach unten ziehen.

edit:
Fehler beseitigt!

Gruß Karo

Re: Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

von balu » So, 21.02.2010 22:55

Hallo meine Freunde,

erst einmal ein dickes Dankeschön an meinen Freund Jürgen :D. Damit bin ich schon mal ein gutes Stück weiter.
Auch für unseren Formelpapst ein Dankeschön für seine Bemühungen :D.

Jedoch, möchte ich es noch etwas "Komfortabler" haben. Ja ja, ich weiss! Keine Ahnung von der Materie, aber nach noch mehr verlangen wollen, tztztz. :lol:.

Nun, wenn ich die Function nach rechts und unten ziehen will, ergibt das ein Problem. Denn die Zelladressen wandern ja nicht mit, da sie ja in Anführungszeichen stehen. Das ist ja so, als wären es Absolute Bezüge A-la $A$1. Und wenn ich die Anführungszeichen weglasse, dann määckert Calc und das Makro meldet einen "Exception".

Wenn ich aber den Aufruf der Function so ändere, dass sie sich die Zelladresse aus einer anderen Zelle holt, dann geht es, auch wenn es etwas umständlich ist.
Beispiel an Hand der angehängten geänderten Beispieldatei:
In A20 steht A2, und in B20 steht C2
In A21 steht A3, und in B21 steht C3
[...]
Der Aufruf der Function lautet dann:

Code: Alles auswählen

=HYPERADRESSE(A20;B20)
Und die kann ich ja dann z.B. nach unten ziehen.
Schöner wäre es allerdings, wenn es ohne die Hilfszellen gehen würde, also dass die Zellbezüge sich automatisch anpassen. Läßt sich da noch was machen? Das wäre einfach fantastisch *freu*. Und wenn nicht, ist es auch nicht weiter schlimm.

@Karo
Aua, da steht die Auflösung schon in der ersten Frage und ich suche verzweifelt mit mri und xray.
Tschuldigung mein Fehler. Ich sollte demnächst aufm Bahnhof lauter und deutlicher reden :wink:.


Gruß
balu
Dateianhänge
HyperAdress_mit_Function_alfa.ods
(17.66 KiB) 30-mal heruntergeladen

Re: Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

von Karolus » So, 21.02.2010 21:53

Hallo
oZelle.getTextFields().getByIndex( 0 ).URL )
Aua, da steht die Auflösung schon in der ersten Frage und ich suche verzweifelt mit mri und xray.

Gruß Karo

Re: Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

von turtle47 » So, 21.02.2010 21:41

Hallo Karo,
Karolus hat geschrieben:@Jürgen
Gute Arbeit !
Bis '..getTextfields' bin ich ja gekommen, aber danach noch '..getbyIndex(0).url' zu erforschen, kam ich nicht drauf
Nee nee nee, will mich ja nicht mit fremden Feder schmücken, aber ich kann vielleicht nur besser lesen. 8)
balu hat geschrieben:Den eingerückten Teil der Formel habe ich hir im Forum gefunden, den Winfried mal gepostet hatte um den Hyperlink in eine "MessageBox" auszugeben.
....
balu hat geschrieben:Function HyperAdresse (HyAdres As Integer)

oBlatt = ThisComponent.Sheets().getByName( "Tabelle1" )
oZelle = oBlatt.getCellRangeByName( "C3" )
Print ConvertFromURL( oZelle.getTextFields().getByIndex( 0 ).URL )

HyperAdresse = HyAdres

End Function
Schönen Gruss.

Jürgen

Re: Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

von Karolus » So, 21.02.2010 21:24

Hallo

@Jürgen
Gute Arbeit !
Bis '..getTextfields' bin ich ja gekommen, aber danach noch '..getbyIndex(0).url' zu erforschen, kam ich nicht drauf ;-)

Gruß Karo

Re: Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

von turtle47 » So, 21.02.2010 20:37

Hallo mein Freund Balu,

die Function könnte folgendermassen aufgebaut sein:

Code: Alles auswählen

Function HyperAdresse (oCell_Hyp as String , oCell_Check as String , HyperAdresse As string)
	oBlatt = ThisComponent.Sheets().getByName( "Tabelle1" )
	oZelle_Check = oBlatt.getCellRangeByName(oCell_Check).value
	if oZelle_Check = 1 then
	oZelle = oBlatt.getCellRangeByName( oCell_Hyp )
	HyperAdresse = ConvertFromURL(oZelle.getTextFields().getByIndex(0).URL)
	else
	HyperAdresse = ""
	end if
End Function
Aufgerufen wird sie wie folgt:

Code: Alles auswählen

=HYPERADRESSE("A2";"D2")
Die Prüfziffer "1" steht in Zelle "D2"!

Die Aktualisierung funktioniert nicht automatisch sondern muss mit Strg+Shift+F9 aufgerufen werden.

Hilft das weiter?

Jürgen

Re: Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

von balu » So, 21.02.2010 19:49

Hallo Karo,

na dann will ich mal versuchen Schaffner zu spielen :lol:

Also, wenn man eine xterne Tabelle verknüpft, z.B. von http://www.nba.com/playerfile/dirk_nowi ... stats.html, dann sind ja manchmal einige Daten als Hyperlinks eingefügt. Das erkennt man ja daran, dass der dementsprechende Zelleintrag einen Grauen Hintergrund mit einer Blauen Schrift enthält, das ist der Hyperlink.

Hab da mal ein kleines Beispiel angehängt, von der besagten Seite.

Wie zu ersehen ist, steht da z.B. Milwaukee. Aber dahinter verbirgt sich der Hyperlink http://www.nba.com/bucks/. Und genau diesen will ich auslesen. Jetzt verständlicher :wink:


Gruß
balu
Dateianhänge
HyperAdress.ods
(13.21 KiB) 31-mal heruntergeladen

Re: Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

von Karolus » So, 21.02.2010 19:23

Hallo Balu
Erklär das nochmal mit ganz anderen Worten, zumindest ich versteh gerade nur Bahnhof!
( 'Hyperlink' ist nicht 'Verknüpfung zu externen Daten' )

Gruß Karo

Hyperlink-Adressen per Benutzerdefenierte Function auslesen.

von balu » So, 21.02.2010 18:28

Schön guten Tag, liebe Gemeinde.

Ich krieg es nicht gebacken, StarBasic zu verstehen, sorry :( . Deshalb bitte ich um eure Hilfe.

Also, ich habe 4 Spalten in denen Formatierte Hyperlinks drinstehen, die ich über "Verknüpfung zu externenen Daten" importiert habe. Nun möchte ich mir in 4 weiteren Spalten daneben per "Benutzerdefenierte Function" nur die Hyperlink-Adressen ausgeben lassen. Aber auch nur dann, wenn in einer anderen Zelle eine 1 drin ist. Also in etwa so:

Code: Alles auswählen

=WENN(X4;HyperAdresse;"")
Wobei HyperAdresse die "Benutzerdefenierte Function" wäre.

Im ganz groben müsste ja die Function dann etwa so aussehen,

Code: Alles auswählen

Function HyperAdresse (HyAdres As Integer) 

	oBlatt = ThisComponent.Sheets().getByName( "Tabelle1" )
	oZelle = oBlatt.getCellRangeByName( "C3" )
	Print ConvertFromURL( oZelle.getTextFields().getByIndex( 0 ).URL )

HyperAdresse = HyAdres 

End Function
aber auch nur im ganz groben. Denn ich weiss nicht wie ich der Function Relative Bezüge, per Row und Colum, erklären soll. Kurz und gut, ich versteh gar nichts.
Den eingerückten Teil der Formel habe ich hir im Forum gefunden, den Winfried mal gepostet hatte um den Hyperlink in eine "MessageBox" auszugeben.
Meine Frage lautet also jetzt:
Wie muss ich den oben genannten Code ändern, damit die Function HyperAdress mir innerhalb der 4 Spalten den Hyperlink ausgibt?
Ach ja, die Function soll nur im 1. Tabellenblatt ausgeführt werden.

Ich hoffe ich hab mich verständlich genug ausgedrückt, ansonsten müsst ihr noch mal nachfragen.

Für eure Bemühungen bedanke ich mich schon mal recht herzlich, und wünsche euch noch einen schönen Sonntagabend :D .


Gruß
balu

Nach oben