fout 5981: opslagruimte macro's...

Status
Niet open voor verdere reacties.

xboxmaniac

Gebruiker
Lid geworden
1 jul 2009
Berichten
13
Hallo allemaal,
Sinds een maand of twee hebben we een vba script gemaakt waarin je bij een nieuw document eerst een invulscherm krijgt die het daarna automatisch de gegevens in het document plaatst.
Dit zit zo:
We hebben een eigen werkbalk gemaakt met daarin een 5-tal knoppen iedere knop roept een macro aan die dan weer een bepaald sjabloon inlaadt.
bv. klik op de knop Fax, fax sjabloon wordt geladen, invul scherm verschijnt.
zo hebben we: fax, mail, memo, procedure, brief.
nu hebben we de laatste tijd het probleem dat je bij het fax-sjabloon een foutmelding krijgt.
als ik op de knop druk verschijnt netjes het invulscherm deze kan je invullen.
maar zodra ik op OK klik verschijnt de volgende melding:

fout 5981 tijdens uitvoering:
de opslagruimte van macro's kan niet worden geopend.

Dit gebeurd alleen bij de fax niet bij de andere sjablonen.

Nu heb ik een hoop gezocht op internet ook hier, maar geen van de antwoorden hebben bij mij effect.
zoals de beveiliging die aanstaat, deze staat op laag.
en een antwoord over europeese tekens zoals bv een blokhaak in bestandsnaam.
bestandsnaam is gewoon heel simpel Fax.dot dus dit is het niet.

Misschien heeft iemand nog een andere verklaring en oplossing hiervoor.
Ik zou er erg mee geholpen zijn.
Alvast bedankt. :thumb:
 
Plaats de code die achter de OK-kop schuilt eens hier. Dat lijkt me informatiever voor het beantwoorden van je vraag.
 
Dit is de Code achter de Ok button.

Code:
Private Sub CommandButton1_Click()

Dim Aan$, Tav$, Faxnr$, Van$, Datum$, Paginas$, Onderwerp$, Tekst$

Aan$ = TextBox1()
Selection.GoTo What:=wdGoToBookmark, Name:="Aan"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
Selection.TypeText Text:=Aan$

Tav$ = TextBox2()
Selection.GoTo What:=wdGoToBookmark, Name:="Tav"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
Selection.TypeText Text:=Tav$

Faxnr$ = TextBox3()
Selection.GoTo What:=wdGoToBookmark, Name:="Faxnr"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
Selection.TypeText Text:=Faxnr$

Van$ = TextBox4()
Selection.GoTo What:=wdGoToBookmark, Name:="Van"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
Selection.TypeText Text:=Van$

Datum$ = TextBox5()
Selection.GoTo What:=wdGoToBookmark, Name:="Datum"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
Selection.TypeText Text:=Datum$

Paginas$ = TextBox6()
Selection.GoTo What:=wdGoToBookmark, Name:="Paginas"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
Selection.TypeText Text:=Paginas$

Onderwerp$ = TextBox7()
Selection.GoTo What:=wdGoToBookmark, Name:="Onderwerp"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
Selection.TypeText Text:=Onderwerp$

Selection.GoTo What:=wdGoToBookmark, Name:="Tekst"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
    
Unload Userform1

End Sub
 
Dat kan simpeler:
Je code bevat veel overbodige onjuiste code.
Dit is voldoende:
Code:
Private Sub CommandButton1_Click()
  Hide
  For j= 1 to 8
    ThisDocument.bookmarks(choose(j,"Aan","Tav","Faxnr","Van","Datum","Paginas","Onderwerp","Tekst"))=Me("TextBox" & j).Text
  Next
End Sub

Dim Aan$, Tav$, Faxnr$, Van$, Datum$, Paginas$, Onderwerp$, Tekst$
is fout.
Juiste dimensionering
Dim Aan as string, Tav as string.....
Maar deze variabelen zijn vostrekt overbodig.

Aan$ = TextBox1()
Textbox1 is een tekstvak in het gebruikersscherm en hier doe je alsof het een matrixvariabele is: dat geeft fouten.
Juiste toekenning:
Code:
Aan=TextBox1.text
Maar ook dit is overbodig om je faxformulier te maken.

Het gebruik van Select, selection, activate dien je zoveel mogelijk te vermijden in VBA want overbodig, vertragend en verwarrend. Vermijd daarom 'ActiveDocument' ook.

Tenslotte: ik beveel het gebruik van Documentvariabelen aan in plaats van bookmarks; de code zou er zo uit komen te zien:
Code:
Private Sub CommandButton1_Click()
  Hide
  For j= 1 to 8
    ThisDocument.Variables(choose(j,"Aan","Tav","Faxnr","Van","Datum","Paginas","Onderwerp","Tekst")=Me("TextBox" & j).Text
    ThisDocument.fields.update
  Next
End Sub
In het sjabloon zet je dan geen bladwijzers maar documentvariabele-velden (menubalk/invoegen/veld/Docvariable)
 
Laatst bewerkt:
Heel erg bedankt voor je reactie.
Dit script heb ik van bestaande sjablonen af die ooit in het verleden zijn gemaakt.
En heb het aangepast met m'n beetje script kennis zoals het moest worden.
Heb er niet heel veel ervaring mee, maar het lukt aardig.
De rest werkt ook precies zo.
Ik ga het sjabloon nu aanpassen, zal even duren.
Ik laat je weten als het is gelukt.
Nogmaals bedankt!
 
Is dit dan echt alles?

Code:
Private Sub CommandButton1_Click()
  Hide
  For j= 1 to 8
    ThisDocument.Variables(choose(j,"Aan","Tav","Faxnr","Van","Datum","Paginas","Onderwerp","Tekst")=Me("TextBox" & j).Text
    ThisDocument.fields.update
  Next
End Sub

Moet ik dan ook nog iets doen met die Textboxen?
en bij uitvoeren geeft hij ongeldig gebruik van een eigenschap bij
Code:
.Variables

misschien dat ik iets verkeerd doe hoor daar ben ik van overtuigd eigenlijk maar t gaat nog niet goed :)

Die Docvariabelen aanduiden is zo simpel als (menubalk/invoegen/veld/Docvariable) ?
als ik dan weer ga kijken na invoeren is het weg, dat hoort? kan je die variable nog terug vinden om te checken of het goed staat?

Hierachter:
Code:
(j,"Aan","Tav","Faxnr","Van","Datum","Paginas","Onderwerp","Tekst")=Me("TextBox" & j).Text
moest nog een ) als ik t goed heb althans dat gaf hij aan, niet boeiend verder.
 
Code:
Private Sub CommandButton1_Click()
  Hide
  For j= 1 to 8
    ThisDocument.Variables(choose(j,"Aan","Tav","Faxnr","Van","Datum","Paginas","Onderwerp","Tekst")[COLOR="Red"])[/COLOR]=Me("TextBox" & j).Text
    ThisDocument.fields.update
  Next
End Sub
Ja, dit is echt alles.
Die extra ) klopt.
Die Docvariabelen aanduiden is zo simpel als (menubalk/invoegen/veld/Docvariable) ?
Ja. Je moet iedere docvariabele wel een naam geven. Je kunt zichtbaar maken wat je gedaan hebt met Alt-F9 (is een schakelknop).
Als het goed is zie je dan { DOCVARIABLE Aan } ,
{ DOCVARIABLE Tav }, ... etc.
 
Laatst bewerkt:
Helemaal TOP1
Hij werkt inderdaad, Liep eerst vast op "Tekst" dit was namelijk een bookmark omdat daar de cursor heen moet springen als formulier is bevestigd.
De rest wordt nu ingevuld.
nu krijg ik alleen nog een fout bij die Tekst variable , dit moet ik nog uitzoeken.
Misschien weet je ook de regel om dat in te stellen?
dat na invoeren de cursor op een bepaalde regel begint.
Bedankt!!!:thumb:
 
Als je wil dat de cursor in de 16e alinea gaat staan:

Code:
Thisdocument.paragraphs(16).select

(meestal zijn bookmarks overbodig en een verlegenheidsoplossing)
PS. Kzou die andere sjablonen ook nog maar even nakijken.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan