Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Taal instellen in VBA

181 views
Skip to first unread message

Frits.van Leeuwen

unread,
Dec 17, 2009, 10:32:16 AM12/17/09
to
Hallo allemaal,

Ik exporteer tekst en datums vanuit MS Access 2007 naar MS Word 2007.
Dit kan in 4 talen. Alles in in de database vertaald, maar de datums worden
gegenereerd en daar door niet vertaald.
De datums staan dus altijd in het Nederlands. Hoe kan ik de datums in de
juiste taal exporteren?

Alvast bedankt,
Frits


Frits.van Leeuwen

unread,
Dec 21, 2009, 8:22:40 AM12/21/09
to
"Frits.van Leeuwen" <Frits.va...@nospam.cbg.nl> schreef in bericht
news:OOvtf4yf...@TK2MSFTNGP05.phx.gbl...
Ik lees nu dat ik vergeet wat informatie te geven.
Als ik in MS Acces de datum in het Engels, Frans of Duits zet, krijg ik het
waarschijnlijk in MS Word ook op die manier.
Nu gebrukik ik voor het Nederlands de volgende code:

DatumStr = Format(Me.datum, "dd mmmm yyyy")
UwDatumStr = Format(Me.UwDatum, "dd mmmm yyyy")

Maar als ik voor het Engels de volgende code gebruik:

DatumStr = UCase(Left(Format(Me.datum, "Mmmm dd, yyyy"), 1)) &
LCase(Right(Format(Me.datum, "Mmmm dd, yyyy"), Len(Format(Me.datum, "Mmmm
dd, yyyy")) - 1))
UwDatumStr = UCase(Left(Format(Me.UwDatum, "Mmmm dd, yyyy"), 1)) &
LCase(Right(Format(Me.UwDatum, "Mmmm dd, yyyy"), Len(Format(Me.UwDatum,
"Mmmm dd, yyyy")) - 1))

dan wordt de maand met een hoofdletter geschreven en de volgorde is anders,
maar de spelling blijft Nederlands.
Metde volgende code exporteer ik het vervolgens naar MS Word:

Set wrdobj = CreateObject("Word.Application")
wrdobj.Visible = True
wrdobj.Activate
wrdobj.Documents.Open (strPad + strBestand + strExtention) 'hier wordt
het juiste sjabloon geopend.

wrdobj.ActiveDocument.Bookmarks("uwdatum").Range.Text = UwDatumStr
wrdobj.ActiveDocument.Bookmarks("Datum").Range.Text = DatumStr


John van Leiden

unread,
Dec 21, 2009, 8:53:01 AM12/21/09
to

Je zal dus in 4-talen aan moeten geven hoe de datum moet worden gelezen.
Op zijn Engels is dat dus: Format(Datum,"mm-dd-yyyy")


"Frits.van Leeuwen" wrote:

> .
>

John van Leiden

unread,
Dec 21, 2009, 9:34:01 AM12/21/09
to

Ik denk toch dat je dat dan de maanden ook als tekst moet gaan zien en dat
je deze toevoegd aan je of een vertaal tabel waarbij het "maand nummer" en de
"taal" samen de sleutel zijn.

Tabel: VertaalTabel
Velden: MaandCode nummeriek
Land nummeriek
MaandInJuisteTaal Tekst

Als je die dan zo toevoegd dan zou het ook moeten werken:

Vertaling =
Dfirst("MaandInJuisteTaal";"VertaalTabel";"DatePart('m',me.datum) And Land =
XX ") '----- XX is de landcode

Daarna kan je hem indelen en dus exporteren zoals je zelf wilt......


Bijv: vertaling & " " & DatePart('dd',Me.datum) & ", " &
DatePart('yyyy',Me.datum)
December 21, 2009


Frits.van Leeuwen

unread,
Dec 22, 2009, 2:53:14 AM12/22/09
to

"John van Leiden" <Johnva...@discussions.microsoft.com> schreef in
bericht news:49A98746-258B-478B...@microsoft.com...
Bedankt John voor je reactie.
Het is een goede en uitgebreide oplossing, maar niet wat ik hoopte. Ik had
in gedachte de taal in Access om te gooien naar de gewenste taal, om zo de
datum als tekst in de juiste taal te kunnen exporteren. ik blijf nog even
doorzoeken naar wat ik in gedachten heb, maar ik hou jouw oplossing zeker in
gedachte.


Frits.van Leeuwen

unread,
Dec 23, 2009, 4:24:28 AM12/23/09
to
Ik heb het anders opgelost.
Ik heb in MS Access 2007 een module aangemaakt met de naam Functies
Hierin heb ik de volgende functie geplaatst.

' --- Functie DatumInJuisteTaal geeft de datum op een goed manier in tekst
weer terug ---
Function DatumInJuisteTaal(FTaal As String, FDatum As Date) As String

' INPUT
' FTaal = de taalcode om te bepalen waarin de output moet staan.
' FDatum = datum cijfers.

' OUTPUT
' DatumInJuisteTaal = de datum in tekst in de juiste FTaal en opmaak.

' LOCAL
' FDag = dag in 2 cijfers
' FMaand = maand in 2 cijfers
' FJaar = jaar in 4 cijfers

Dim FDag, FMaand, FJaar As String

FDag = Format(FDatum, "dd")
FMaand = Format(FDatum, "mm")
FJaar = Format(FDatum, "jjjj")

Select Case (FTaal + FMaand)
Case "NL01"
DatumInJuisteTaal = FDag + " januari " + FJaar
Case "NL02"
DatumInJuisteTaal = FDag + " februari " + FJaar
Case "NL03"
DatumInJuisteTaal = FDag + " maart " + FJaar
Case "NL04"
DatumInJuisteTaal = FDag + " april " + FJaar
Case "NL05"
DatumInJuisteTaal = FDag + " mei " + FJaar
Case "NL06"
DatumInJuisteTaal = FDag + " juni " + FJaar
Case "NL07"
DatumInJuisteTaal = FDag + " juli " + FJaar
Case "NL08"
DatumInJuisteTaal = FDag + " augustus " + FJaar
Case "NL09"
DatumInJuisteTaal = FDag + " september " + FJaar
Case "NL10"
DatumInJuisteTaal = FDag + " oktober " + FJaar
Case "NL11"
DatumInJuisteTaal = FDag + " november " + FJaar
Case "NL12"
DatumInJuisteTaal = FDag + " december " + FJaar
Case "EN01"
DatumInJuisteTaal = "January " + FDag + ", " + FJaar
Case "EN02"
DatumInJuisteTaal = "February " + FDag + ", " + FJaar
Case "EN03"
DatumInJuisteTaal = "March " + FDag + ", " + FJaar
Case "EN04"
DatumInJuisteTaal = "April " + FDag + ", " + FJaar
Case "EN05"
DatumInJuisteTaal = "May " + FDag + ", " + FJaar
Case "EN06"
DatumInJuisteTaal = "June " + FDag + ", " + FJaar
Case "EN07"
DatumInJuisteTaal = "July " + FDag + ", " + FJaar
Case "EN08"
DatumInJuisteTaal = "August " + FDag + ", " + FJaar
Case "EN09"
DatumInJuisteTaal = "September " + FDag + ", " + FJaar
Case "EN10"
DatumInJuisteTaal = "October " + FDag + ", " + FJaar
Case "EN11"
DatumInJuisteTaal = "November " + FDag + ", " + FJaar
Case "EN12"
DatumInJuisteTaal = "December " + FDag + ", " + FJaar
Case "DU01"
DatumInJuisteTaal = "den " + FDag + ". Januar " + FJaar
Case "DU02"
DatumInJuisteTaal = "den " + FDag + ". Februar " + FJaar
Case "DU03"
DatumInJuisteTaal = "den " + FDag + ". M�rz " + FJaar
Case "DU04"
DatumInJuisteTaal = "den " + FDag + ". April " + FJaar
Case "DU05"
DatumInJuisteTaal = "den " + FDag + ". Mai " + FJaar
Case "DU06"
DatumInJuisteTaal = "den " + FDag + ". Juni " + FJaar
Case "DU07"
DatumInJuisteTaal = "den " + FDag + ". Juli " + FJaar
Case "DU08"
DatumInJuisteTaal = "den " + FDag + ". August " + FJaar
Case "DU09"
DatumInJuisteTaal = "den " + FDag + ". September " + FJaar
Case "DU10"
DatumInJuisteTaal = "den " + FDag + ". Oktober " + FJaar
Case "DU11"
DatumInJuisteTaal = "den " + FDag + ". November " + FJaar
Case "DU12"
DatumInJuisteTaal = "den " + FDag + ". Dezember " + FJaar
Case "FR01"
DatumInJuisteTaal = "le " + FDag + " janvier " + FJaar
Case "FR02"
DatumInJuisteTaal = "le " + FDag + " f�vrier " + FJaar
Case "FR03"
DatumInJuisteTaal = "le " + FDag + " mars " + FJaar
Case "FR04"
DatumInJuisteTaal = "le " + FDag + " avril " + FJaar
Case "FR05"
DatumInJuisteTaal = "le " + FDag + " mai " + FJaar
Case "FR06"
DatumInJuisteTaal = "le " + FDag + " juin " + FJaar
Case "FR07"
DatumInJuisteTaal = "le " + FDag + " juillet " + FJaar
Case "FR08"
DatumInJuisteTaal = "le " + FDag + " ao�t " + FJaar
Case "FR09"
DatumInJuisteTaal = "le " + FDag + " septembre " + FJaar
Case "FR10"
DatumInJuisteTaal = "le " + FDag + " octobre " + FJaar
Case "FR11"
DatumInJuisteTaal = "le " + FDag + " novembre " + FJaar
Case "FR12"
DatumInJuisteTaal = "le " + FDag + " d�cembre " + FJaar
End Select
End Function
' --- einde functie ---

Ik roep de functie alsvolgt aan:

Dim strTaal, DatumStr As String
strTaal = "NL"
DatumStr = DatumInJuisteTaal(strTaal, Me.datum)

Maar nu wordt strTaal gemarkeerd en krijg ik de volgende foutmelding:

Compileerfout:
ByRef-argumenttypen komen niet overeen.

Wie weet er wat ik over het hoofd zie?


LucT

unread,
Dec 23, 2009, 6:33:53 AM12/23/09
to
On 23 dec, 10:24, "Frits.van Leeuwen" <Frits.vanLeeu...@nospam.cbg.nl>
wrote:
>         DatumInJuisteTaal = "den " + FDag + ". März " + FJaar

>     Case "DU04"
>         DatumInJuisteTaal = "den " + FDag + ". April " + FJaar
>     Case "DU05"
>         DatumInJuisteTaal = "den " + FDag + ". Mai " + FJaar
>     Case "DU06"
>         DatumInJuisteTaal = "den " + FDag + ". Juni " + FJaar
>     Case "DU07"
>         DatumInJuisteTaal = "den " + FDag + ". Juli " + FJaar
>     Case "DU08"
>         DatumInJuisteTaal = "den " + FDag + ". August " + FJaar
>     Case "DU09"
>         DatumInJuisteTaal = "den " + FDag + ". September " + FJaar
>     Case "DU10"
>         DatumInJuisteTaal = "den " + FDag + ". Oktober " + FJaar
>     Case "DU11"
>         DatumInJuisteTaal = "den " + FDag + ". November " + FJaar
>     Case "DU12"
>         DatumInJuisteTaal = "den " + FDag + ". Dezember " + FJaar
>     Case "FR01"
>         DatumInJuisteTaal = "le " + FDag + " janvier " + FJaar
>     Case "FR02"
>         DatumInJuisteTaal = "le " + FDag + " février " + FJaar

>     Case "FR03"
>         DatumInJuisteTaal = "le " + FDag + " mars " + FJaar
>     Case "FR04"
>         DatumInJuisteTaal = "le " + FDag + " avril " + FJaar
>     Case "FR05"
>         DatumInJuisteTaal = "le " + FDag + " mai " + FJaar
>     Case "FR06"
>         DatumInJuisteTaal = "le " + FDag + " juin " + FJaar
>     Case "FR07"
>         DatumInJuisteTaal = "le " + FDag + " juillet " + FJaar
>     Case "FR08"
>         DatumInJuisteTaal = "le " + FDag + " août " + FJaar

>     Case "FR09"
>         DatumInJuisteTaal = "le " + FDag + " septembre " + FJaar
>     Case "FR10"
>         DatumInJuisteTaal = "le " + FDag + " octobre " + FJaar
>     Case "FR11"
>         DatumInJuisteTaal = "le " + FDag + " novembre " + FJaar
>     Case "FR12"
>         DatumInJuisteTaal = "le " + FDag + " décembre " + FJaar

> End Select
> End Function
> ' --- einde functie ---
>
> Ik roep de functie alsvolgt aan:
>
>     Dim strTaal, DatumStr As String
>     strTaal = "NL"
>     DatumStr = DatumInJuisteTaal(strTaal, Me.datum)
>
> Maar nu wordt strTaal gemarkeerd en krijg ik de volgende foutmelding:
>
> Compileerfout:
> ByRef-argumenttypen komen niet overeen.
>
> Wie weet er wat ik over het hoofd zie?

Dim strTaal As String
Dim DatumStr As String

anders is enkel de laatste als string gedefinieerd

U kunt ook de functie choose(FMaand,"Januari","Februari",....)
gebruiken

Frits.van Leeuwen

unread,
Dec 23, 2009, 7:20:04 AM12/23/09
to
Dim strTaal As String
Dim DatumStr As String

anders is enkel de laatste als string gedefinieerd

U kunt ook de functie choose(FMaand,"Januari","Februari",....)
gebruiken


LucT bedankt.

Ik wist niet dat ik achter Dim maar 1 variabele kan plaatsen. Ik herinner
mij dat ik in Access 2003 dit ook vaak deed en daar geen problemen mee had.
Maar misschien was dat toeval. Weer wat geleerd zullen we maar zeggen.
Kan je me vertellen hoe je die functie choose voor mij ingedachten hebt? Het
klinkt interessant.


LucT

unread,
Dec 23, 2009, 3:27:10 PM12/23/09
to
On 23 dec, 13:20, "Frits.van Leeuwen" <Frits.vanLeeu...@nospam.cbg.nl>
wrote:

ipv zoveel case na mekaar, enkel de taal afvragen

Select Case (FTaal)
Case "NL"
DatumInJuisteTaal = FDag & " " & choose(FMaand, "Januari ",
"Februari", tem december) & " " & FJaar
Case "EN"
DatumInJuisteTaal = FDag & " " & choose(FMaand, "January" ,
"February , ....) & " " & FJaar
Case "FR"
.......
End select

Frits.van Leeuwen

unread,
Dec 24, 2009, 3:03:29 AM12/24/09
to
"LucT" <luct...@gmail.com> schreef in bericht
news:9561d383-551c-4860...@j4g2000yqe.googlegroups.com...


Goed man!!!!
Nu is mijn code gelijk een stuk overzichtelijker.
Bedankt


0 new messages