Avatar billede kasp Nybegynder
30. marts 2008 - 20:11 Der er 5 kommentarer og
1 løsning

Fejl meddelse ved makro

Hej.
Jeg har et problem. Jeg har en Access form der skal bruges til fletning i et worddokument. Jeg har dertil oprettet en makro. Når jeg kører denne makro får jeg følgende fejl:

"Det indtastede udtryk indeholder et funktionsnavn, MS Office Access ikke kan finde."

Selve makroen ser således ud:
Public Sub MergetoWord()
' This method creates a new document in
' MS Word using Automation
  Dim rsCust As New ADODB.Recordset
  Dim sSQL As String
  Dim WordObj As Word.Application
  Dim iTemp As Integer
 
On Error Resume Next
 
  sSQL = "SELECT * FROM Customers " _
    & "WHERE CustomerNumber = " _
    & Forms!Orders![CustomerNumber]
 
  rsCust.Open sSQL, CurrentProject.Connection
 
  If rsCust.EOF Then
    MsgBox "Invalid customer", vbOKOnly
    Exit Sub
  End If
 
  DoCmd.Hourglass True
 
  'Try to get a running instance of Word:
  Set WordObj = GetObject(, "Word.Application")
  If Err.Number <> 0 Then
    'An error is thrown if Word is not running,
    'so use CreateObject to start up Word:
    Set WordObj = CreateObject("Word.Application")
  End If
 
  'Make sure the user can see Word:
  WordObj.Visible = True
 
  'Warning:
  'Specify the correct drive and path to the
  'file named Thanks.dotx in the line below.
 
  WordObj.Documents.Add _
  Template:="C:\Thanks.dotx", NewTemplate:=False
 
  With WordObj.Selection
    .GoTo what:=wdGoToBookmark, Name:="FullName"
    .TypeText rsCust![ContactName]
   
    .GoTo what:=wdGoToBookmark, Name:="CompanyName"
    .TypeText rsCust![CompanyName]
   
    .GoTo what:=wdGoToBookmark, Name:="Address1"
    .TypeText rsCust![Address1]
   
    .GoTo what:=wdGoToBookmark, Name:="Address2"
    If IsNull(rsCust![Address2]) Then
      .TypeText ""
    Else
      .TypeText rsCust![Address2]
    End If
   
    .GoTo what:=wdGoToBookmark, Name:="City"
    .TypeText rsCust![City]
   
    .GoTo what:=wdGoToBookmark, Name:="State"
    .TypeText rsCust![State]
   
    .GoTo what:=wdGoToBookmark, Name:="Zipcode"
    .TypeText rsCust![Zipcode]
   
    .GoTo what:=wdGoToBookmark, Name:="PhoneNumber"
    .TypeText rsCust![PhoneNumber]
   
    .GoTo what:=wdGoToBookmark, Name:="NumOrdered"
    .TypeText Forms!Orders![Quantity]
   
    .GoTo what:=wdGoToBookmark, Name:="ProductOrdered"
    If Forms!Orders![Quantity] > 1 Then
      WordObj.Selection.TypeText Forms!Orders![Item] & "s"
    Else
      WordObj.Selection.TypeText Forms!Orders![Item]
    End If
   
    .GoTo what:=wdGoToBookmark, Name:="FName"
   
    iTemp = InStr(rsCust![ContactName], " ")
   
    If iTemp > 0 Then
      .TypeText Left$(rsCust![ContactName], iTemp - 1)
    End If
    .GoTo what:=wdGoToBookmark, Name:="LetterName"
    .TypeText rsCust![ContactName]
   
    DoEvents
    WordObj.Activate
    .MoveUp wdLine, 6
  End With
 
  'Set the Word Object to Nothing to free resources:
  Set WordObj = Nothing
  DoCmd.Hourglass False

End Sub

Jeg har forsøgt mig med bare at åbne worddokumentet, men det virker heller ikke. Jeg tror det er en opstæningsfejl i Access, men kan bare ikke finde ud af hvor den ligger. Håber der er nogen der kan hjælpe.
Avatar billede terry Ekspert
31. marts 2008 - 22:04 #1
actually this isnt a macro but VBA code in a module.


Do you have any idea which line of code causes the error?
I am guessing that the Word template you are using is missing a bookmark.

If you cant find the problem then I may be able to help if you can send me the dB and also the word template.

ekspertenATsanthell.dk
AT = @
Avatar billede kasp Nybegynder
01. april 2008 - 15:29 #2
Hej Terry.
Tak. Jeg aner ikke hvor det er den går galt. Jeg ved ikke om det er i worddokumentet den går galt for hvis jeg bare prøver at lave en almindelig VBA kode i Access der skal åbne et Word-dokument ved at trykke på en knap kommer samme fejlmeddelse.

Jeg vil gerne prøve at sende dig db, ovenstående er fra en bog, men det er samme princip jeg søger.
Avatar billede terry Ekspert
01. april 2008 - 17:48 #3
Yes if you can send me the dB with an example which has the error.
Avatar billede terry Ekspert
02. april 2008 - 19:41 #4
To get round the error the sub to a function

Public Sub MergetoWord()

Should be

Public Function MergetoWord()

and End Sub

to

End Function


It will then work although I can be sur ethat you will see anything on the word document. I'm using Vista nd Office 2007 and nothing appears on the document although I dont get any error.
Avatar billede kasp Nybegynder
05. april 2008 - 09:16 #5
Hej Terry.
Tak for hjælpen. Har fået det til at virke nu. Det kræver dog at word er åben samtidig.

Mange tak.
Avatar billede terry Ekspert
05. april 2008 - 14:37 #6
thanks

I wouldnt have thought that it wold b enecessary to have Word running, this is what these lines of code check for.

'Try to get a running instance of Word:
  Set WordObj = GetObject(, "Word.Application")
  If Err.Number <> 0 Then
    'An error is thrown if Word is not running,
    'so use CreateObject to start up Word:
    Set WordObj = CreateObject("Word.Application")
  End If
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