Toon posts:

[VBA] Macro voor Word*

Pagina: 1
Acties:

Verwijderd

Topicstarter
Momenteel ben ik bezig om een macro te creeren voor Word die het makkelijker moet maken voor gebruikers om formulieren in te vullen.

Zo moet het worden:

Gebruiker download 'test.doc' en vult de formulier in. Wat hij bij 'naam' invult word onthouden en als hij klaar is met het invullen van het document en klikt op 'Save As' moet er automatisch in het bestandsnaam de naam verwerkt worden.
Tevens moet het bestand ook in een ander standaard pad terecht komen wat in de Macro aangegeven word. Nu heb ik zelf al het een en ander gedaan maar loop ik echter vast.
Mijn Macro ziet er momenteel als volgt uit:

Sub Change()
'
' Change Macro
' Macro created 2/14/2008 by Deniz Oguray
'
ActiveDocument.SaveAs FileName:="", FileFormat:=wdFormatDocument, _
LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False

With ActiveDocument
Selection.GoTo What:=wdGoToBookmark, Name:="Email"
Selection.MoveEndUntil cset:="@"
aName = Selection.Text
If aName = " " Or aName = "" Then
MsgBox "Email address must be entered."
Else
aFile = "VPN-" + aName + ".doc"

End If
End With

MsgBox (aFile)

End Sub


Het werkt nog niet helemaal zoals ik wil.
Kan 1 van jullie dit wellicht testen en aanpassen?
Of misschien tips geven waar ik meer informatie kan vinden over Macro's.
Ik hoop dat iemand mij kan helpen!

Groeten

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Je zal toch wat specifieker moeten zijn.
Je loopt vast en het loopt niet zoals je het wilt.... Tja, wat wil je dan, en wat doet hij nu ?
Gebruik ook code-tags bij het posten van code, want nu is het gewoon een onleesbare brij.

Verder is dit VBA, dus hoort het thuis in OFF
-> OFF

https://fgheysels.github.io/


Verwijderd

Topicstarter
Op dit moment doet hij weinig. Als ik geen email adres invul dan displayed hij een message van "Email address must be enterred" dat is dus wel goed.
Maar stel ik vul een email adres en ik doe Save As dan krijg ik de naam niet in het bestandsnaam verwerkt. En dat is mijn bedoeling.

Als ik hier ActiveDocument.SaveAs FileName:="" tussen de hekjes "" een naam invoer dan wordt dat de bestandsnaam.
Maar eigenlijk wil ik dat tussen de hekjes verwijst naar aName.

Wat krijg je dan als bestandsnaam? Dus stel usernaam: Klaas Meijer.

aFile = "VPN-" + aName + ".doc"

VPN-Klaas.Meijer.doc

bij ons zijn de email adressen firstname.lastname@

is dit wat duidelijker ?

  • Coffeemonster
  • Registratie: Juli 2000
  • Laatst online: 17-11 13:43
Kijk nog eens goed wat de macro nu doet. Eerst sla je het document op met ActiveDocument.SaveAs (wat volgens mij een foutmelding moet geven, omdat je een lege string als naam opgeeft), en daarna pas genereer je een filename die je in de variabele aFile zet, en waar vervolgens niets mee gedaan wordt. Die volgorde klopt dus niet: je wilt eerst een filename genereren, en vervolgens het bestand onder die naam opslaan. Die volgorde zul je dus ook in je macro moeten aanhouden.

Overigens zou ik niet met Selections werken, maar direct met de properties van de bookmark. Waarschijnlijk is dat Value, maar dat zou je in de help van VBA moeten opzoeken. Daar vind je ook meer over hoe je VBA-macro's kan maken.

Look for something long enough and you will find it; look for something without understanding, and it will find you.
A normal day at the stock exchange


  • Raging_Trancer
  • Registratie: Mei 2006
  • Laatst online: 05-06-2022
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Change()
Dim aFile as String
Dim aName as String
Dim rBladwijzer as Range

    Set rBladwijzer=ActiveDocument.Bookmarks("Email").Range
    aName=trim(rBladwijzer.text)
    If Instr(1, aName, "@")=0 Then
        MsgBox "Email must be entered.", vbOKOnly + vbExclamation, "Missing information"
    Else
        aFile = "VPN-" & aName & ".doc"
        ActiveDocument.SaveAs FileName:=aFile
    End if
    Set rBladwijzer=Nothing

End Sub


Alste... Tip; declareer variabelen en gebruik ranges ipv selecties. Ook had je alle default waarden opgegeven bij je SaveAs statement.... Niet nodig ;) Oh... En Strings voeg je niet samen met + maar met & :+

[ Voor 10% gewijzigd door Raging_Trancer op 25-02-2008 15:13 . Reden: Code 'iets' netter gemaakt... ]