Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[MS Access 2007] Opslaan van word file in docx

Pagina: 1
Acties:

  • Morrey
  • Registratie: November 2005
  • Laatst online: 27-11 10:29
Ik zit met het volgende probleem. Ik heb een database geklust voor de studievereniging, met een aantal handige functies. Op het moment dat je een commissie opzoekt, is er de mogelijkheid om 'commissies instructies' te openen: een word document die staat opgeslagen op de server die de naam [CommissieID].docx draagt.

Het idee van de betreffende knop is, is dat hij de instructies opent als deze aanwezig is, of de mogelijkheid geeft om een nieuw Word bestand aan te maken, gebaseerd op een template (Template.dotx). Op het moment dat je een nieuwe instructie aanmaakt, dan slaat hij deze direct op in de betreffende map, met de juiste naam.

Echter hier komt ook het probleem om de hoek kijken: ik wil graag dat het als docx wordt opgeslagen, dat doet hij ook, alleen is Word ingesteld om by default in .doc op te slaan. Hierdoor wordt op dit moment een .doc opgeslagen als .docx, zonder dat deze wordt omgezet naar de nieuwe bestandsindeling. Het resultaat: corrupte Word bestanden. Hoe kan ik dit probleem oplossen? Ik ben vrij nieuw met VBA, dus als je een werkend voorbeeld hebt, graag! Dit is overigens de code die al redelijk werkt:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Private Sub instructie_Click()
    Dim wrd As Object
    Dim strPath As String, strTemplate As String, strDocPath As String
           
    strPath = CurrentProject.Path & "\Commissie instructies\"
    
    If FileExists(strPath & [ID] & ".docx") = False Then
        box = MsgBox("Werkinstructie voor de commissie " & [Naam].Column(1) & " nog niet, wil je er een aanmaken?", vbYesNo, "Instructie aanmaken")
        If box = vbYes Then
        
        Set oWrd = CreateObject("Word.Application")
        strTemplate = strPath & "Template.dotx"
        oWrd.Documents.Add strTemplate
        oWrd.Visible = True
    
                
        With oWrd.ActiveDocument.Bookmarks
        .Item("COMMISSIE_ID").Range.Text = [ID]
        .Item("COMMISSIENAAM").Range.Text = [Naam].Column(1)
        End With
        
        strDocPath = strPath & [ID] & ".docx"
        oWrd.ActiveDocument.SaveAs strDocPath
                
        End If
       
    Else
    Set oWrd = CreateObject("Word.Application")
    oWrd.Visible = True
    strPath = strPath & [ID] & ".docx"
    oWrd.Documents.Open strPath
    
    End If
End Sub

[ Voor 0% gewijzigd door Verwijderd op 19-07-2009 21:50 . Reden: codetags ]


Verwijderd

de saveas methode heef een FileFormat parameter die het opslagformaat bepaalt.
aangezien de code die je gepost hebt late binding gebruikt, moet je de naam van de aan te wenden constante vervangen door zijn werkelijke waarde:
code:
1
...saveas .... , FileFormat:=12

zie WdSaveFormat Enumeration.

  • Morrey
  • Registratie: November 2005
  • Laatst online: 27-11 10:29
Beste _heretic_,

Bedankt voor je reply. Ik ga het zodadelijk uitproberen. Overigens nog een vraag: ik ben vrij nieuw tot het programmeren in VBA, waar kan ik de informatie makkelijk terugvinden over de parameters van dit soort functies?

Verwijderd

opzoeken in de online help van de desbetreffende applicatie ofwel via de msdn-link die ik hierboven gegeven heb (juiste versie kiezen van de toepassing).