Avatar billede alexander_j Nybegynder
22. marts 2007 - 20:56 Der er 1 kommentar og
1 løsning

Brevflet med word.

Jeg har fundet ud af at åbne et worddokument med følgende kode:
Dim myword As Word.Application
Set myword = New Word.Application
myword.Documents.Open filename:=CurrentProject.Path & "\elevplan_elev.doc"
myword.Visible = True
myword.Activate

og den afsluttes med:
Set myword = Nothing

Jeg har optaget en makro i word med lidt brevfletning, hvilket gav denne kode:
ActiveDocument.MailMerge.OpenDataSource name:= _
CurrentProject.Path & "\vm_work.mdb" _
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=" & CurrentProject.Path & "\vm_work.mdb;Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Je" _
, SQLStatement:="SELECT * FROM `student_plan`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
Selection.MoveRight Unit:=wdCharacter, count:=1
Selection.MoveDown Unit:=wdLine, count:=1
Selection.MoveLeft Unit:=wdCharacter, count:=21
ActiveDocument.Fields.Add Range:=Selection.Range, type:=wdFieldMergeField _
, Text:="""t_name"""
Selection.MoveDown Unit:=wdLine, count:=3
ActiveDocument.Fields.Add Range:=Selection.Range, type:=wdFieldMergeField _
, Text:="""t_prev_subject"""
ActiveDocument.Fields.Add Range:=Selection.Range, type:=wdFieldMergeField _
, Text:="""t_prev_subject"""
Selection.TypeBackspace
Selection.TypeBackspace
Selection.MoveDown Unit:=wdLine, count:=3
ActiveDocument.Fields.Add Range:=Selection.Range, type:=wdFieldMergeField _
, Text:="""t_prev_methods"""
Selection.MoveDown Unit:=wdLine, count:=3
ActiveDocument.Fields.Add Range:=Selection.Range, type:=wdFieldMergeField _
, Text:="""t_prev_sociale"""
With ActiveDocument.MailMerge
  .Destination = wdSendToNewDocument
  .SuppressBlankLines = True
  With .DataSource
      .FirstRecord = wdDefaultFirstRecord
      .LastRecord = wdDefaultLastRecord
  End With
  .Execute Pause:=False
End With

Det virker for så vidt fint første gang jeg afspiller koden fra access, men hvis jeg lukker den fremkomne wordfil og så afspiller koden igen, så meldes der fejl:
Run-Time error '4248':
Kommandoen er ikke tilgængelig, da der ikke er noget åbent dokument.

Derudover generer det mig at både 'skabelonfil'(ikke en .dot, men .doc da det ikke ville køre med .dot) og den flettede fil åbnes med ovenstående kode - er det ikke muligt kun at have den flettede fil fremme?
Avatar billede alexander_j Nybegynder
24. marts 2007 - 15:06 #1
Jeg har ændret en del på koden - ved at fjerne divers selection.MoveDown mv. - men grundlæggende er problemet det samme. Anden gang man køre koden, så melder den nævnte fejl og i debuggen markerer den denne del af koden:
ActiveDocument.MailMerge.OpenDataSource name:= _
CurrentProject.Path & "\vm_work.mdb" _
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=" & CurrentProject.Path & "\vm_work.mdb;Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Je" _
, SQLStatement:="SELECT * FROM `student_plan`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess

Mit gæt er at programmet har en fornemmelse at jeg allerede har en åben ActiveDocument.MailMerge.OpenDataSource - men hvordan omgår jeg dette?
Avatar billede alexander_j Nybegynder
25. marts 2007 - 12:36 #2
Jeg lukker lige spørgsmålet her og åbner et nyt.
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