Seite 1 von 1

Re: Makro, welches URLs iterativ in Links wandelt

Verfasst: Di, 16.08.2011 16:19
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

Re: Makro, welches URLs iterativ in Links wandelt

Verfasst: Di, 16.08.2011 22:43
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

Re: Makro, welches URLs iterativ in Links wandelt

Verfasst: Mi, 17.08.2011 08:47
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.