[.NET/Word] Mailmerge werkt niet correct

Pagina: 1
Acties:

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 13:53
Ik heb een programma in VB.Net gemaakt die een mailmerge uitvoert naar Word2000. Globaal worden in het programma de volgende stappen uitgevoerd:

- De gegevens van een query worden weggeschreven naar een .txt-bestand in kommagescheiden formaat: klantnr,naam,adres,postcode,plaats
- Word wordt opgestart en het mailmergedocument wordt geopend
- De mailmerge wordt uitgevoerd

Ik heb het programma geintalleerd op drie PC's waarop beide Word2000 is geinstalleerd. Op twee PC's draait het programma zonder problemen, op de derde PC wordt de derde stap niet goed uitgevoerd. Als de mailmerge op het document wordt uitgevoerd, dan wordt de komma niet gezien als scheidingsteken. Ik krijg dan bij het mergen op elk veld de foutmelding dat het desbetreffende veld niet wordt gevonden in het databestand, maar dat het kan worden vervangen door "klantnrnaamadrespostcodewoonplaats". :? :?

Word interpreteert de komma dus niet als scheidingsteken, maar negeert de komma compleet en ziet maar één veld.

Het uitvoeren van de mailmerge heb ik in VB.NET als gevolgt geprogrammeerd:

Visual Basic .NET:
1
2
3
4
        With objDoc.MailMerge
            .OpenDataSource(Application.StartupPath & "\Data.txt")
            .Execute()
        End With


Als ik op de derde PC echter handmatig het mailmergedocument open en de mailmerge wil uitvoeren, dan wordt wel alle gegevens correct uit het databestand gelezen en wordt de mailmerge correct uitgevoerd.

Conclusie is dus dat de gegevens in het databestand correct zijn, maar dat er expliciet een scheidingsteken moet worden ingesteld. Op de desbetreffende PC heb ik geprobeerd om in Word handmatig een datasource aan het document te koppelen, maar nergens wordt een mogelijk scheidingsteken aangegeven.

Is het mogelijk om de problemen op de derde PC via VB.NET of Word op te lossen?

Verwijderd

Klinkt stom, maar waarom zet je je regional settings (Control Panel) niet gewoon op Dutch/Nederlands?

Zo ja, check ook je toetsenbord invoer (default input language). Dit vind je ook in Regional Settings, 2de tabblad en dan details.

Engelse scheidingsteken voor 1000-tallen is een ,(komma) en voor decimale notatie gebruikt met een .(punt).

Waarschijnlijk staat op die "3de pc" dit fout en kan je dit simpel en snel verhelpen.

Word heeft de irritante feature dat hij de spellings/grammatica controle gelijk zet aan je toetsenbord instellingen.

Je spellings/grammaticacontrole zal dus waarschijn ook fout staan op die 3de pc.

Je kan overigens de standaard invoertaal als gebruiker veranderen door op het NL of UK teken te klikken in je system tray, of te dubbelklikken op Nederlands / Engels op de statusregel in Word.

Natuurlijk kan je dit ook instellen vanuit VBA:

Visual Basic:
1
2
3
    Selection.LanguageID = wdDutch
    Selection.NoProofing = False
    Application.CheckLanguage = True

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Leve de Regional Settings 8)7
Word gebruikt waarschijnlijk de list seperator die op dat systeem in de Regional settings is ingesteld. Dit is ook het geval bij TOC (Table of Contents velden).

Helaas heb ik niet meer de code om de list seperator op te halen of deze in te stellen. Je kunt het best even zoeken op MSDN of google.

Overigens heb ik in het verleden een soortgelijke mailmerge functionaliteit gemaakt en daar nooit problemen mee gehad. Waarschijnlijk omdat de software op Nederlandse systemen draaide ;)

It’s nice to be important but it’s more important to be nice


Verwijderd

CultureInfo.CurrentCulture.TextInfo.ListSeparator gebruiken i.p.v. ",".

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 13:53
Dank voor de reacties. :) Ik zal ze maandag eens proberen. Als het waar is van de regiosettings, dan kan het inderdaad kloppen dat Word de data maar als een veld beschouwt. Echter, de komma wordt wel volledig genegeerd. Ik krijg als mogelijk veldweergave "klantnrnaamadrespostcodeplaats" te zien, ipv "klantnr,naam,adres,postcode,plaats". Waarom wordt die komma dan niet gebruikt? :?

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 13:53
Ff een update ... :)

Ik heb vandaag kunnen testen met de ListSeparator. VB.NET meldde op deze machine dat de ; als separator wordt gebruikt. Ik heb daarop het databestand aangepast en de komma door de ; vervangen.

Wanneer ik het mailmerge-document op deze machine open, dan krijg ik de volgende melding: Document 1 contained too many data fields. Als ik vervolgens de mailmerge uitvoer, dan ziet hij in het databestand weer één groot veld, de ; zijn weggelaten.

Kan iemand mij verder helpen, please. :)
Pagina: 1