Avatar billede swil Nybegynder
23. november 2001 - 13:52 Der er 15 kommentarer og
2 løsninger

Start af Word fra Access

Kære Eksperter

Jeg har brug for, via en trykknap i Access, at kunne:

1) Starte Word
2) Åbne et specifikt worddokument
3) Kunne overføre data fra aktuel formular i Access, hvor trykknappen befinder sig.

Kan dette lade sig gøre og hvis ja, så hvordan?
Avatar billede terry Ekspert
23. november 2001 - 14:06 #1
Well here is how you open word. You need a reference to word to do this. Tools+References menu while in code view

Dim myword As Word.Application
Dim aConverter As Variant
Dim I As Integer

 
    Set myword = New Word.Application
   
    myword.Documents.Open filename:=\"D:\\Your.doc\"
   
    myword.Visible = True

    myword.Quit
    Set myword = Nothing
   

Avatar billede terry Ekspert
23. november 2001 - 14:17 #2
Pace a button on th eform adn in the buttons on click event add the above code and make a reference to Word.

Then you can write to the document with>

myword.Selection.InsertAfter Text:=\"This is a test\"
OR
myword.Selection.InsertAfter Text:=Me.Field1

There are many other paramaters to change fonts etc. but I am not an \"ekspert\" at word.
Avatar billede terry Ekspert
23. november 2001 - 14:17 #3
Pace  = place
Avatar billede lazac Nybegynder
23. november 2001 - 14:24 #4
Desværre er jeg ikke særlig stærk i kodning, så jeg kan ikke gennemskue terry\'s forslag.
Jeg har istedet oprettet en makro hvor jeg har valgt \"RunApp\" som action. I den tilhørende kommandolinie har jeg indtastet;
\"winword.exe c:\\docnavn.doc\" og det virker.
For at overføre data fra db til doc, skal der nok oprettes et \"merge\"-dokument. Hvordan man så kobler disse to sammen ved jeg desværre ikke, men jeg lytter.
Avatar billede swil Nybegynder
23. november 2001 - 14:26 #5
Er ved at afprøve Terrys forslag
Avatar billede swil Nybegynder
23. november 2001 - 15:14 #6
Terrys første forslag er OK, ved at bruge nedenstående til indsættelse af tekst:

myword.Selection.InsertAfter Text:=Me.Field1

kommer teksten til at stå i første position i Worddokumentet og hvis der er flere felter står disse i umiddelbar forlængelse af hinanden.

Er der nogen eksperter, der har et alternativt forslag til overførsel af variable felter?
Avatar billede terry Ekspert
23. november 2001 - 17:06 #7
myword.Selection.InsertAfter Text:=Me.Field1 & VbCrLf
myword.Selection.InsertAfter Text:=Me.Field2





Avatar billede terry Ekspert
23. november 2001 - 17:07 #8
If you place aVbCrLf (Carriage Return+Line feed) after each line then the cursor gets placed on the next line.
Avatar billede fdata Forsker
23. november 2001 - 19:41 #9
Placer bogmærker på de steder i dokumentet, hvor du vil indsætte dine variable.
Brug så:
  myword.ActiveDocument.Bookmarks(B).Select
  myword.Selection.TypeText Text:=S
hvor B er navnet på et bogmærke og S er variablen.
Avatar billede mugs Novice
23. november 2001 - 23:52 #10
Nedennævnte koder indsætter Access-data det sted i Word, hvor du har sat et bogmærke. Bemærk at bogmærkets navn skal være magen til feltnavnet i Access:

Private Sub Kommandoknap21_Click()
Dim objword As New Word.Application
Dim WordDoc As New Word.Document
Dim Svar As String
\'Stien til dokumentet
Set WordDoc = objword.Documents.Add(\"C:\\Programmer\\Microsoft
Office\\Skabeloner\\Opskrift.doc\")
Call InsertAtBookmark(WordDoc, \"Bogmærke\", Me!Feltnavn)
Call InsertAtBookmark(WordDoc, \"Bogmærke\", Me!Feltnavn)
\'osv osv
objword.Visible = True
DoCmd.Hourglass False
End Sub


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

Flg. kode henter et bestemt Word-dokument:

Private Sub Kommandoknap24_Click()
On Error GoTo err_open
Dim docname As String
Dim objword As Word.Application
Dim objdoc As Word.Document
\'Stien til dokumentet
Const dir As String = \"C:\\opskrifter\\\"
Const ext As String = \".doc\"
\'Me.Nr refererer til et felt i formularen
docname = dir & Me.Nr & ext
On Error Resume Next
Set objword = GetObject(, \"Word.Application\")
Err.Clear
On Error GoTo err_open
If objword Is Nothing Then
Set objword = GetObject(\"\", \"Word.Application\")
End If
objword.Visible = True
AppActivate \"Microsoft Word\"
objword.Documents.Open docname
Exit Sub
err_open:
MsgBox \"fejlkode: \" & Err.Number
End Sub
Avatar billede swil Nybegynder
25. november 2001 - 10:04 #11
Tak for hjælpen. Jeg brugte Terrys hjælp til punkt 1 og 2 og mugs til punkt 3. Fdata´s så lettere ud end mugs, men virkede desværre ikke.
Avatar billede mugs Novice
25. november 2001 - 12:26 #12
Tak for point.
Avatar billede fdata Forsker
25. november 2001 - 22:11 #13
Mystisk. Det virker fint her.
Her får du en helt enkel opskrift - free of charge ;o)
Sub FletTest()
  Dim MyWord As Object
  Set MyWord = CreateObject(\"Word.Application\")
 
  MyWord.Visible = True
  MyWord.Activate
  MyWord.WindowState = 1

  MyWord.Documents.Open FileName:=\"C:\\Temp\\Test.doc\"
  MyWord.ActiveDocument.Bookmarks(\"BM\").Select
  MyWord.Selection.TypeText Text:=\"Denne tekst indsættes\"
End Sub
Avatar billede mugs Novice
25. november 2001 - 22:23 #14
fdata > Fungerer perfekt her
Avatar billede fdata Forsker
25. november 2001 - 22:27 #15
Fint, mugs. Jeg undrede mig bare.
Avatar billede swil Nybegynder
25. november 2001 - 23:13 #16
fdata > Jeg prøver din \"enkle opskrift\" mandag, beklager hvis jeg var for hurtig.
Avatar billede fdata Forsker
26. november 2001 - 15:52 #17
No problem. Beklager hvis jeg var for langsom ;o)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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