Makro, welches URLs iterativ in Links wandelt

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Makro, welches URLs iterativ in Links wandelt

Beitrag von DPunch »

Aloha

Schau mal, ob folgendes wunschgemäß funktioniert:

Code: Alles auswählen

	oDoc = thisComponent
	oSearchDesc = oDoc.createSearchDescriptor
	oSearchDesc.SearchString = "[a-z]+://[^ ]+(\.[^ ]+)+"
	oSearchDesc.SearchRegularExpression = True
	oResult = oDoc.findFirst(oSearchDesc)
	Do While NOT isNull(oResult)
		sURL = oResult.String
		oResult.HyperLinkURL = sURL
		oResult = oDoc.findNext(oResult,oSearchDesc)
	Loop
rittergig
*
Beiträge: 11
Registriert: Di, 21.06.2011 10:02

Re: Makro, welches URLs iterativ in Links wandelt

Beitrag von rittergig »

Danke!
Das funktioniert soweit.
Gibt es auch eine Möglichkeit, diese Suche auf eine zuvor markierten Bereich durchzuführen.

Ich will eigentlich genau genommen, die URLs nur im Literaturverzeichnis durch Links ersetzten

Grüße, Peter
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Makro, welches URLs iterativ in Links wandelt

Beitrag von DPunch »

Aloha
rittergig hat geschrieben:Gibt es auch eine Möglichkeit, diese Suche auf eine zuvor markierten Bereich durchzuführen.
Solange es sich dabei nur um reinen Text handelt, nach dem Motto:

Code: Alles auswählen

	oDoc = thisComponent
	oSelection = oDoc.CurrentSelection
	If NOT oSelection.supportsService("com.sun.star.text.TextRanges") Then
		MsgBox "Bitte einen Text selektieren",48,"Selektion"
		Exit Sub
	End If
	oText = oDoc.Text
	oSearchDesc = oDoc.createSearchDescriptor
	oSearchDesc.SearchString = "[a-z]+://[^ ]+(\.[^ ]+)+"
	oSearchDesc.SearchRegularExpression = True
	oResult = oDoc.findFirst(oSearchDesc)
	Do While NOT isNull(oResult)
		For i = 0 To oSelection.Count -1
			oEnd = oSelection(i).End
			oStart = oSelection(i).Start
			If oText.compareRegionStarts(oEnd,oResult) <= 0 AND oText.compareRegionStarts(oStart,oResult) >= 0 Then
				sURL = oResult.String
				oResult.HyperLinkURL = sURL	
			End If
		Next i
		oResult = oDoc.findNext(oResult,oSearchDesc)
	Loop	
Bei Selektion über Text und zum Beispiel auch noch Tabellen wird das schon komplizierter.
Antworten