Avatar billede soc127754 Nybegynder
23. marts 2004 - 11:17 Der er 7 kommentarer

Åben word-dokument i Visual basic

Jeg har et VB-program der skal skanne noget tekst fra worddokumenter. Jeg søger derfor en metode til at åbne et worddokument i VB og konvertere det til noget tekst. Er der nogle der har en løsning. Word er på computeren. Kan man evt. kalde et eller andet objekt for at konvertere?
Avatar billede martin_moth Mester
23. marts 2004 - 11:52 #1
Kopieret fra et af mine svar på et andet spørgsmål, der omhandler Excel og ikke word:

-------------0--------------

Du skal bruge en OLE-komponent på din form sammen med metoden CreateLink. Metoden CreateLink anvendes til at skabe et link til objektet. Syntaksen er således:

  Object.CreateLink sourcedoc [, sourceitem]

Hvor
  ·  sourcedoc er navnet på den fil der ønskes skabt et link til
  ·  sourceitem er et element i sourcedoc

F.eks. kan der skabes et link til celleområdet R1C1:R8C2 (række 1-8, kolonne 1-2) i Excel-regnearket Budget.xls i samme bibliotek som VB-projektet, således:

  OLE1.CreateLink App.Path & "\Budget.xls", "R1C1:R8C2"

For at metoden CreateLink kan anvendes, skal OLE-kontrollens egenskab OLETy-peAllowed forinden sættes til Linked eller both. Anvend f.eks. systemkonstanten vbOLELinked.

At der er skabt et link til Excel-regnearket Budget.xls betyder, at hvis der dobbelt-klikkes på det i OLE-kontrollen, vil Excel starte op, og der kan arbejdes med regne-arket.

Voilà!

-------------0--------------

Omskriv en smule og få det til at spille med word, det må være noget i retning af OLE1.CreateLink App.Path & "\Dokument.doc",
Avatar billede soc127754 Nybegynder
23. marts 2004 - 12:02 #2
Mit mål er ikke at starte word. Mit mål er at få worddokumentet ind som ren tekst i mit VB-program. Dur din metode hertil?
Avatar billede martin_moth Mester
23. marts 2004 - 12:08 #3
Ja - har jeg skrevet noget om at starte word?
Avatar billede martin_moth Mester
23. marts 2004 - 12:15 #4
Hov - du kan jo ikke få dokumentet ind som REN tekst i VB - for det er jo netop IKKE ren tekst, men et word dokument. Hvis du vil arbejde i ren tekst må du gemme dokumentet som .txt fra word.

Min løsning skaber et link til dokumentet, så du kan pille i det inde fra VB - men det er stadig formateret tekst
Avatar billede soc127754 Nybegynder
23. marts 2004 - 14:29 #5
"pille i det" - hvad betyder det. Er der ikke en mulighed for at man kan "pille" teksten ud af worddokumentet, lukke word og bruge teksten videre i VB-programmet?
Avatar billede venne Nybegynder
23. marts 2004 - 14:51 #6
Hvis du i VB-projektet laver en reference til "Microsoft Word 9.0 Object Library", eller hvilken version du nu har, kan du bruge denne kode:

  Dim app As Word.Application
  Dim doc As Word.Document
  Dim tekst As String
 
  Set app = New Word.Application
  Set doc = app.Documents.Open("dokument.doc")
  tekst = doc.Content.Text
  doc.Close


Den rå tekst uden formatering er nu i variablen tekst.
Avatar billede zembla Nybegynder
23. marts 2004 - 14:56 #7
Jo - du kan i princippet gøre lige hvad du ønsker. Enten at arbejde med Word's interne søgemekaniske. Eller kopiere indeholdet af dit worddokument og behandle det, som ren tekst, rtf eller hvad du måtte ønske. Herunder et eksempel på hvordan du hurtigt kan bruge Word's egne søgefaciliteter.

I dit VB-projekt skal du sætte en reference til Microsoft Word 10.0 Object Library. (Du har muligvis en anden version af Word end jeg, og du vælger blot den du kan finde på listen.) Med denne reference kan du via dit VB-program gøre alt hvad du kan i Word.

    Dim objWD As New Word.Application
    Dim objWDdocument As Word.Document
    Set objWDdocument = objWD.Documents.Open("din word fil")
    objWD.Visible = False
    objWD.ScreenUpdating = False
    objWD.Selection.Find.ClearFormatting
    With objWD.Selection.Find
        .Text = "dit søge ord"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    If objWD.Selection.Find.Execute Then
        MsgBox "fundet"
    Else
        MsgBox "ikke fundet"
    End If
   
    objWDdocument.Close
    objWD.Quit
   
    Set objWDdocument = Nothing
    Set objWD = Nothing
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester