Avatar billede manutd Nybegynder
22. august 2001 - 15:12 Der er 7 kommentarer og
1 løsning

Generere Word-dok. med indhold.

Jeg skal fra min VB6 applikation kunne generere et word-dokument.

Jeg skal ved tryk på en knap i min applikation kunne generere word-dokumentet.

Derefter skal jeg kunne indsætte op til 10 forskellige tekstafsnit i dokumentet. For hvert tekst skal jeg kunne definerer font, skriftstørrelse og skrifttype

Efter indsættelse af første tekstafsnit, skal jeg så kunne foretage et par linieskift og så indsætte næste tekstafsnit.

Den tekst som skal indsættes har jeg liggende i ganske almindelige string-variabler.

Til slut skal jeg så kunne åbne det genererede worddokument.

Er der nogle der har nogle forslag til hvordan jeg kan gøre det? Gerne eksempler på selve koden.

Avatar billede kasperxb Nybegynder
22. august 2001 - 15:45 #1
sæt reference til Word application i project->references
\'Opret word object
Dim wrd as Word.Application
Set wrd = New Word.Application

wrd.add \' brug en skabelon eller et dokument

derefter har du adgang til hele dokumentet optag evt en macro i word over det flow du vil have og importer det til dit project.
husk at sætte wrd = nothing når du har lukket pænt efter dig ellers får du problemer med hukommelsen.
Avatar billede manutd Nybegynder
22. august 2001 - 15:59 #2
Jeg er bange for at jeg skal bruge meget mere udførlige kommentarer. Jeg er lidt på glatis.

Wrd.add  \'kom gerne med eksempel på benyttelsen.

Når jeg så har adgang. Hvad gør jeg så for at indsætte mine tekststrenge, og hvordan definerer jeg præcist størrelse, skrifttype , fed, fremhævet osv.

Hvordan optager man i macro i word, og hvordan importerer jeg det.

Jeg har aldrig arbejdet med word2000 før gennem VB, og der er 200 point.
Avatar billede kasperxb Nybegynder
22. august 2001 - 16:14 #3
Hermed komplet kode du kan paste ind på en button click event:

\'Code start
Dim wrd As Word.Application
Dim doc As Word.Document

Set wrd = New Word.Application

wrd.Documents.Add

wrd.Visible = True
\' indsæt macro code her

wrd.ActiveDocument.Select

Selection.TypeText Text:=\"dettge er en tekst linie formateret fed\"
Selection.Font.Bold = wdToggle
Selection.TypeParagraph \' enter
Selection.TypeParagraph \' enter

wrd.ActiveDocument.SaveAs \"c:\\test.doc\"
wrd.ActiveDocument.Close False

wrd.Visible = False
Set wrd = Nothing
\' Code slut

Du skal være opmærksom på hvilken session af word du har fat i hvis der feks. er en word åben i forvejen vil den have fokus. Sæt derfor fokus på den word du har åbnet. Det gør den kode jeg har lavet ikke.
Avatar billede kasperxb Nybegynder
22. august 2001 - 16:14 #4
husk stadig at oprettet referencen...
Avatar billede kasperxb Nybegynder
22. august 2001 - 16:18 #5
.... og jeg bliver ved med ikke at svare ordentligt:-)

Optage en macro i word? -
start word
vælg tools->record macro->start
skriv formater og klik som dit workflow skal være.
stop på stop knappen
tryk ALT + F11
under NewMacros vil din nyoptagede macro befinde sig og du kan redigere lidt i koden for overflødig kode og derefter copypaste det til dit projekt.

Håber det er svar nok ellers prøver vi igen :-)!
Avatar billede manutd Nybegynder
23. august 2001 - 01:45 #6
Hej kasperxb

jeg har selv fundet en mulig løsning andetsteds her på eksperten. Men måske kan du hjælpe mig med at finpudse den. Det var et ganske udmærket svar du kom med, men jeg fandt noget andet, som jeg syntes var lidt nemere at gå til.

koden kommer nedenfor. Jeg har så på forhånd oprettet en skabelon i word med 5 bogmærker, og koden nedenfor kan så sætte tekst ind i dokumentet.

Men ved du hvordan jeg har mulighed for selv at definerer skrifttype, skriftstørrelse, skrifttypografi og evt understregning af den tekst jeg sætter ind.

Jeg har tænkt mig at lade brugeren vælge fonten gennem en commendialog fra min VB6 applikation, og jeg gemmer så disse fontoplysninger i tekststrenge.

Private Sub Brevflet()
    Dim objWord As New Word.Application
    Dim WordDoc As New Word.Document
    Set WordDoc = objWord.Documents.Add(\"C:\\windows\\skrivebord\\bogmærkedoc.doc\")
    Call InsertAtBookmark(WordDoc, \"bogmærke1\", \"dette er modtageradressen\")

    Call InsertAtBookmark(WordDoc, \"bogmærke2\", \"Dette er datoen\")
    objWord.Visible = True
    \'DoCmd.Hourglass False
End Sub

Public Function InsertAtBookmark(objWordDoc As Word.Document, _
strBookmark As String, strText As String) As Boolean
    With objWordDoc.Bookmarks
        If .Exists(strBookmark) Then
            .Item(strBookmark).Range.Text = strText
            InsertAtBookmark = True
        End If
    End With
End Function
Avatar billede kasperxb Nybegynder
23. august 2001 - 09:46 #7
I InsertAtBookMark efter

.Item(strBookmark).Range.Text = strText

kan du indsætte følgende:

\'start Code
.Item(\"Kasper\").Range.Select
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
\' herefter kan du manipulere med skrifttypen som du vil der er mange flere properties på font objectet som du kan bruge, se selv efter.

    With Selection.Font
        .Name = \"Verdana\"
        .Size = 12
        .Bold = False
        .Underline = wdUnderlineSingle
    End With

\' end Code
Avatar billede manutd Nybegynder
23. august 2001 - 11:22 #8
Hej igen.

Du styrer for vildt. Lige det jeg manglede. Mange tak for hjælpen.

Hvis jeg får brug for flere tilpasninger i fremtiden kan det være jeg laver et nyt indlæg med henvisning til mit nye spørgsmål.

200 velfortjente point til dig.
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