gedeelte van tekst selecteren

Status
Niet open voor verdere reacties.

pvonken

Gebruiker
Lid geworden
6 nov 2008
Berichten
12
Ik heb een programma dat via hyperlinks Worddocumenten moet gaan printen.
De hyperlink wordt "ingelezen" in de vorm van: weergavetekst#hyperlinkadres#subadres#scherminfo en dit gaat niet goed.
Nu werkt mijn programma wel als alleen het hyperlinkadres wordt gelezen.

De lengte van de weergavetekst en hyperlinkadres zijn telkens van verschillende lengte zodat je m.i. geen gebruik kunt maken van left en/of right functies.

Wie weet hoe ik de ingelezen regel kan omzetten naar alleen het hyperlinkadres?
 
Niet getest:

Code:
Public Function StripHyperLink(strLink As String)
Dim i As Integer
Dim j As Integer

'opzoeken eerste # sign
i = InStr(strLink, "#")
'opzoeken tweede # sign
j = InStr(i + 1, strLink, "#")

If i <> 0 And j <> 0 Then
   StripHyperLink = Mid(strLink, i + 1, (j - i))
Else
    StripHyperLink = ""
End If
End Function

Je kunt de juiste link nu krijgen door
Code:
newlink = StripHyperLink("weergavetekst#hyperlinkadres#subadres#scherminfo")
 
Bedankt voor je reactie.

Ik heb je code in mijn bestaande programma opgenomen maar nu loopt het op een andere regel vast.
Het lijkt er op dat de hyperlink nu op de juiste manier wordt gelezen maar het open van het Worddocument lukt niet.
Als ik op de hyperlink in de tabel klik dan werkt deze wel!

Zie bijgevoegd bestand.
 

Bijlagen

  • Sparky.zip
    62,7 KB · Weergaven: 34
De zip file is niet leesbaar, je zult 'm even ongezipt moeten plaatsen
 
Bedankt voor je reactie.

Ik heb je code in mijn bestaande programma opgenomen maar nu loopt het op een andere regel vast.
Het lijkt er op dat de hyperlink nu op de juiste manier wordt gelezen maar het open van het Worddocument lukt niet.
Als ik op de hyperlink in de tabel klik dan werkt deze wel!

Zie bijgevoegd bestand.

Volgens mij komt het door het strippen van het orginele hyperlink adres. Daardoor is de indicatie HYPERLINK omzeep geholpen.
Wellicht dat dit wel werkt
Code:
newlink = Hyperlink(StripHyperLink("weergavetekst#hyperlinkadres#subadres#scherminfo"))

Hierdoor wordt er weer een nieuwe Hyperlink aangemaakt.

Succes

Wim
 
Het lukt niet om de database in zijn geheel toe te voegen.
Hieronder de code zoals ik die nu gebruik.
Het programma loopt nu echter vast met de melding "compileerfout: sub of Function is niet gedefinieerd.

---------------------------------------------------------------------------------------------------------------------
Public Function StripHyperLink(strLink As String)
Dim i As Integer
Dim j As Integer

'opzoeken eerste # sign
i = InStr(strLink, "#")
'opzoeken tweede # sign
j = InStr(i + 1, strLink, "#")

If i <> 0 And j <> 0 Then
StripHyperLink = Mid(strLink, i + 1, (j - i))
Else
StripHyperLink = ""
End If
End Function
---------------------------------------------------------------------------------------------------------------------------
Private Sub Frmdoc_Click()

' On Error GoTo ErrHandler ' weglaten van deze regel schakelt foutafhandeling uit en kun je zien waar het fout gaat
Dim W As word.Application
Dim RS As DAO.Recordset
Dim Sdoc As String
Dim SdocinfoOK As String
Dim SdocinfoERR As String
Dim Sinfomelding As String

'controleer of weeknummer ingegeven is.
If Len(Me.Fweeknr) = 0 Then MsgBox "Geef aub een weeknummer in", vbExclamation: Exit Sub

Set RS = CurrentDb.OpenRecordset("select worddocument from Worddocumenten WHERE kalenderweek = " & Me.Fweeknr, dbOpenSnapshot)

'word opstarten
Set W = New word.Application

'doorloop de records
Do Until RS.EOF

'het volledige pad van het document bepalen, hiervoor # weghalen uit de veldwaarde van de link
'Een gedefinieerd hyperlinkadres bestaat uit maximaal vier elementen, die van elkaar worden gescheiden door een hekje (#):weergavetekst#adres#subadres#scherminfo
'Hier loopt het nu op fout, de tekstweergave wordt ook opgehaald.
Sdoc = RS!worddocument '-> dit levert bestanden op met #-jes
' Sdoc = Replace(RS!worddocument, "#", "")

' newlink = StripHyperLink("weergavetekst#hyperlinkadres#subadres#scherminfo") '(Rene Dirks)
Sdoc = Hyperlink(StripHyperLink("Sdoc")) ' WimenBeer


'controleer of bestand bestaat/benaderd kan worden
'indien dat niet het geval is toevoegen aan string die de foutmelding weergeeft
If Dir(Sdoc) = "" Then

SdocinfoERR = SdocinfoERR & Sdoc & vbCrLf

Else 'we kunnen het bestand benaderen dus probeer printen

W.Documents.Open Sdoc, False, True, False ' ***PROGRAMMA LIEP EERST OP DEZE REGEL VAST***
W.PrintOut
SdocinfoOK = SdocinfoOK & Sdoc & vbCrLf

End If

'volgende record
RS.MoveNext
Loop

'string met resultaat opbouwen
Sinfomelding = "* De volgende documenten zijn succesvol geprint : " & vbCrLf & SdocinfoOK & vbCrLf & vbCrLf & _
"* De volgende documenten zijn niet geprint omdat het bestand niet bestaat of niet kan worden benaderd : " & vbCrLf & SdocinfoERR
'en het resultaat tonen
MsgBox Sinfomelding, vbInformation, "Resultaat van printen"

'opruiming
exithere:
W.ActiveDocument.Close ' Deze regel is vlgs Robthom niet nodig!
W.Quit 'word afsluiten
Set W = Nothing
Exit Sub

ErrHandler:
Select Case Err.Number

Case Else
MsgBox "Fout " & Err.Number & " is opgetreden " & vbCrLf & vbCrLf & Err.Description, vbExclamation

End Select

'als een fout optreedt wel opruiming van variabelen
Resume exithere

End Sub
-------------------------------------------------------------------------------------------------------------------------------
 
Bijgevoegd zip-file moet nu wel werken!!
 

Bijlagen

  • Sparky.zip
    61,2 KB · Weergaven: 37
De foutmelding komt op de regel: Sdoc = Hyperlink(StripHyperLink("Sdoc")) en dan is het woord Hyperlink gemarkeerd.
 
Hyperlink is geen geldige opdracht. Het is een methode die bv aan een label of textbox hangt
 
Als ik jouw eerst code gebruik: Sdoc = StripHyperLink("Sdoc") dan loopt hij vast op:
W.Documents.Open Sdoc, False, True, False
 
Ja, dat klopt ook niet. Je gaat nu de tekst "Sdoc" strippen..
Dus NIET:
Code:
 Sdoc = StripHyperLink("Sdoc")

Maar:
Code:
 Sdoc = StripHyperLink(Sdoc)
 
Krijg nu de melding dat bestand hyperlinkadres# niet is geprint.
Het programma leest blijkbaar het hyperlinkadres en nog een #.
Hoe kunnen we dat laatste # er nog vanaf halen?
 
Eentje verder strippen
Code:
If i <> 0 And j <> 0 Then
   StripHyperLink = Mid(strLink, i + 1, [B](j - i - 1)[/B])
Else
    StripHyperLink = ""
End If
 
Programma print nu de documenten zoals gewenst.

Alleen krijg ik nu nog de melding:
Dit bestand wordt gebruikt door een andere toepassing of gebruiker.
C:\Documents en Settings\ ...\normal.dot

Deze melding is een probleem op zich en ik zal kijken hoe ik dit op kan lossen.
(of weet jij ook hier de oplossing voor?)

Heel erg bedankt voor de vlugge en duidelijke reacties.
 
Normal.dot is het sjabloon dat geopend wordt als standaard. Ik heb je code niet helemaal doorgekeken, maar waarschijnlijk draai je nog een ontzichtbare versie van Word op je PC (Even bij taakbeheer kijken hoe vaak winword.exe erin staat, ctrl-alt-del).
Je kunt dit ondervangen door de Word zichtbaar te maken, bijvoorbeeld als je je word object appWord heet: appWord.visible = true
 
Alweer enige tijd bezig om op diverse plaatsen in de VBA-code de code W.Visible.true (W is bij mij Word.Application) uit te proberen.
Het wil maar niet lukken. Meestal blijft het programma steken op End Select.

Op welke positie hoort deze code te staan?
 
Ja, dat begrijp ik. Maar waar moet het staan zonder dat ik weer een foutmelding krijg?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan