BookTranslator
BookTranslator

Een Excel-spreadsheet vertalen zonder formules of dropdowns te breken

Ontdek welke tekst een cel-voor-cel-vertaler in een .xlsx mist (formuletekst, opgemaakte tekst, links, grafieken, macro's), herstel de dropdowns en codes die hij kan breken, en controleer het resultaat met een gratis script en een testwerkmap.

BookTranslator

BookTranslator Team

15 min lezen

Om een hele Excel-werkmap te vertalen, upload je het .xlsx-bestand naar een documentvertaler in plaats van cel voor cel te vertalen. De opdracht Controleren > Vertalen van Excel zelf werkt op de tekst die je selecteert (Microsoft Support), wat prima is voor een label maar traag voor een prijslijst. Een bestandsvertaler leest elke tekstcel, vertaalt die en schrijft de vertaling terug naar hetzelfde adres, zodat formules, getallen en datums blijven staan waar ze stonden.

Wat hij je niet vertelt, is welke tekst hij nooit heeft gelezen. Tekst die in een formule is getypt, een cel met één vet woord, een link, een notitie, een grafiektitel: bij een cel-voor-cel-vertaling kunnen al deze dingen in de oorspronkelijke taal terugkomen. En er kunnen twee dingen breken: een dropdown waarvan de toegestane waarden niet zijn vertaald, en een productcode die wél is vertaald.

We hebben een testwerkmap met twee bladen gemaakt met tekst op elk van die plekken, een gratis controleprogramma geschreven dat laat zien waar de tekst staat, en de werkmap door een lokale reproductie van de spreadsheetverwerking van BookTranslator gehaald. Deze gids laat zien wat er terugkwam, wat je moet aanpassen voordat je uploadt, en hoe je het vertaalde bestand controleert.

Snel antwoord: wat wordt er in een werkmap vertaald?

Waar de tekst staatVoorbeeld uit onze testVertaald door BookTranslator?Wat te doen
Gewone tekstcellen, inclusief kopregels"Blauw notitieboek", "Prijs"JaNiets
Getallen, datums, booleans4.5, 2026-10-30Onveranderd gelatenControleer getalnotaties voor de doelmarkt
Formules=C2*D2Onveranderd gelatenNiets
Tekst in een formule=IF(D2>5,"In stock","Low stock")NeeVerplaats de woorden naar cellen (zie stap 2)
Cel met gemengde opmaak"Beperkte editie pen"Nee, de hele cel wordt overgeslagenWis eerst de opmaak, of vertaal het handmatig
Cellen met hyperlinks"Productpagina"NeeBewerk de linktekst na het vertalen
Waarde in een vervolgkeuzecel"Kantoorartikelen"Ja, maar de vervolgkeuzelijst nietHerstel de lijst, anders is de cel niet meer geldig
Codes met letters"A-77", "B-09"Naar de vertaler gestuurdControleer ze na het vertalen
Codes met alleen cijfers of symbolen"00123"Onveranderd gelatenNiets
Notities en opmerkingen"Controleer leveranciersnaam voor vrijgave"NeeVertaal ze handmatig, of verwijder ze
Bladnamen en benoemde bereiken"Producten", PriceRangeNee, zodat formules tussen werkbladen blijven werkenWijzig werkbladnamen alleen handmatig als het echt nodig is, nadat je de formules hebt gecontroleerd
Grafieken en macro'sEen staafdiagram, een VBA-projectVerwijderd uit het vertaalde bestand in onze testBewaar het origineel, bouw het daarna opnieuw op (zie hieronder)

Oudere .xls-bestanden worden niet geaccepteerd. Open ze in Excel en sla ze eerst op als .xlsx. Macro-enabled .xlsm-bestanden worden geaccepteerd, maar lees de sectie over macro's voordat je er een uploadt: het vertaalde bestand bevat geen macro's, en als de download nog steeds eindigt op .xlsm, wijzig de naam dan naar .xlsx voordat je het opent.

Stap 1: Voer de Checker uit op je werkmap

Download check_xlsx_text.py en voer het uit op je bestand:

python3 check_xlsx_text.py "Price list.xlsx"

Het vereist alleen Python 3 en leest het bestand zonder het te wijzigen. Hier is de samenvatting voor onze voorbeeldwerkmap:

Counts by location:
  cell         code, ID or address        2
  cell         link text                  1
  cell         mixed formatting           1
  cell         plain text                 15
  comments     comment or note text       1
  dropdown     list of allowed values     1
  formula text text inside a formula      6
  sheet        sheet name                 2
  workbook     defined name               1

Plain text cells (translated by a cell-by-cell translator): 15
Items that need a decision before you upload: 12

Onder de tellingen staat elk item met het werkblad en de cel, zoals Products!E2 formula text 'In stock'. Gebruik die lijst als je takenlijst voor Stap 2. Als je werkmap grafieken, tekstvakken, draaitabellen of een macroproject bevat, verschijnen die ook in de tellingen.

De README beschrijft de voorbeeldwerkmap, vermeldt bestandshashes en linkt naar de scripts die deze bouwen, zodat je de test kunt herhalen.

Wat er gebeurde met onze testwerkmap

We hebben de voorbeeldwerkmap door de code gehaald die de spreadsheet-handler van BookTranslator gebruikt, lokaal gereproduceerd op 2026-11-01 met dezelfde bibliotheek (ExcelJS 4.4.0). In plaats van een echte vertaling gebruikten we een placeholder die "[DE]" voor de tekst van elke cel zet. Zo blijft het taalmodel buiten de test, zodat de resultaten alleen laten zien wat de bestandsverwerking verstuurt, behoudt en weglaat.

De handler leest elk werkblad cel voor cel. Het stuurt een cel alleen voor vertaling als de cel een platte tekstwaarde bevat, en slaat alle tekst over die alleen uit cijfers, leestekens en symbolen bestaat. Al het andere in het celraster wordt ongewijzigd gekopieerd. BookTranslator retourneert vervolgens twee bestanden: een vertaalde werkmap en een tweetalige werkmap.

De vertaalde werkmap

Dit is het bestand om te gebruiken. Alle 6 formules, 7 getallen en datums, de valuta- en datumnotaties, de samengevoegde cellen, de notitie, de dropdown-regel en het benoemde bereik kwamen ongewijzigd terug. De 9 kopcellen en de andere platte tekstcellen werden ter plaatse vertaald. Drie resultaten vragen aandacht:

Tekst in formules blijft in de brontaal. De kolom Status gebruikte =IF(D2>5,"In stock","Low stock"). Een formule is geen tekstcel, dus de handler leest deze nooit, en "In stock" blijft in elke rij in het Engels. Hetzelfde geldt voor tekst die is samengevoegd met & of CONCAT, en voor tekst in HYPERLINK.

Een vertaalde dropdown-waarde komt niet meer overeen met de lijst. Cel H2 had een dropdown die "Stationery, Office, Art" toestond. De waarde van de cel werd vertaald, maar de lijst wordt opgeslagen in de validatieregel, niet in een cel, dus die werd niet vertaald. De vergelijkingsmodus van onze checker meldde het als volgt:

Problems: 3
  Products!A3: code changed: 'A-77' -> '[DE] A-77'
  Products!A4: code changed: 'B-09' -> '[DE] B-09'
  Products!H2: '[DE] Stationery' is not in its dropdown list ['Art', 'Office', 'Stationery']

Excel behoudt een waarde die de validatieregel schendt, maar de volgende persoon die de dropdown opent, ziet alleen de oude keuzes, en Gegevens > Ongeldige gegevens omcirkelen zal de cel markeren.

Codes met letters worden naar de vertaler gestuurd. "00123" werd overgeslagen omdat het alleen cijfers bevat. "A-77" en "B-09" werden verstuurd, omdat ze een letter bevatten. Of een code ongewijzigd terugkomt, hangt dan af van het model; niets in de bestandsverwerking beschermt het. Een SKU die terugkomt als "A-77-Artikel" breekt elke lookup die ervan gebruikmaakt.

De tweetalige werkmap

Het tweetalige bestand voegt een vertaalkolom in rechts van elke kolom die ten minste één vertaalde cel had, met koppen zoals "Name (Translated)". Het verplaatst celwaarden naar hun nieuwe kolommen, maar het verplaatst geen celopmaak en werkt formules niet bij. In onze test:

  • bleef de prijsnotatie $#,##0.00 in kolom C staan, die nu productnamen bevat, terwijl de prijzen naar kolom E verhuisden zonder die notatie;
  • de datumnotatie bleef in kolom G staan, die nu de hoeveelheid bevat, dus een hoeveelheid van 10 werd als datum weergegeven;
  • =C2*D2 verhuisde naar kolom K maar verwees nog steeds naar C2 en D2, die nu de productnaam en de vertaling daarvan bevatten, dus kan niet langer 45 retourneren;
  • op het blad Samenvatting telde =SUM(Products!F2:F4) nu een lege vertaalkolom op.

De tweetalige werkmap is dus bedoeld om de bron en de vertaling naast elkaar te lezen, niet om te berekenen. Bewerk deze niet en kopieer er geen formules uit.

Grafieken en macro's

In een aparte kopie van de werkmap hebben we een grafiek en een macroproject toegevoegd, opgeslagen zoals Excel dat doet. Geen van beide zat in het vertaalde of het tweetalige bestand. ExcelJS leest en schrijft werkbladen, stijlen, gedeelde tekst, afbeeldingen, tabellen en opmerkingen, en heeft geen code voor grafiekonderdelen of het VBA-project, dus laat deze weg bij het opslaan. Dezelfde code heeft niets voor draaitabellen, dus verwacht dat draaitabellen ook worden verwijderd, hoewel we er geen hebben getest. De handler slaat de uitvoer ook op als een .xlsx-bestand, dat geen macro's kan bevatten.

Nog een beperking van de test: we hebben de voorbeeldwerkmap zelf met ExcelJS gebouwd, wat het gunstigste geval is voor het behouden van opmaak, samengevoegde cellen en validatieregels. Een werkmap die door Excel is opgeslagen kan functies bevatten die ExcelJS niet modelleert, dus voer de vergelijkingsstap hieronder uit op je eigen bestand in plaats van hetzelfde schone resultaat aan te nemen.

Stap 2: Bereid de werkmap voor voordat je uploadt

Werk op een kopie. De checker vertelt je welke cellen je moet aanpassen.

  1. Verplaats formuletekst naar cellen. Zet de woorden in een klein blad "Labels" en laat de formule ernaar verwijzen: =IF(D2>5,Labels!$A$1,Labels!$A$2). De labelcellen zijn platte tekst, dus ze worden vertaald, en elke formule neemt de vertaling over. Deze ene wijziging lost meestal het grootste deel van het aantal "formuletekst" op, omdat dezelfde zin vaak in een hele kolom wordt herhaald.
  2. Verplaats vervolgkeuzelijsten naar cellen. Wijzig in Gegevens > Gegevensvalidatie de Bron van een getypte lijst (Stationery,Office,Art) naar een bereik op het blad Labels (=Labels!$B$1:$B$3). De lijstwaarden worden dan samen met de cellen die ze gebruiken vertaald. Controleer achteraf een paar cellen: de vervolgkeuzelijst accepteert de vertaalde waarde alleen als het model "Stationery" op beide plaatsen op dezelfde manier heeft vertaald.
  3. Wis gemengde opmaak. Een cel met één vet of gekleurd woord wordt opgeslagen als opgemaakte tekstblokken en volledig overgeslagen. Selecteer de cel en kies Start > Wissen > Opmaak wissen, of typ deze opnieuw en pas daarna het vet weer toe. Als je er veel hebt, noteer ze dan eerst.
  4. Bepaal wat je met notities en opmerkingen doet. Ze worden niet vertaald. Verwijder controlenotities die je niet naar een vertaaldienst wilt sturen en vertaal de rest handmatig.
  5. Sla werkmappen met macro's op als .xlsx. Bewaar je .xlsm als het hoofdbestand. Vertaal een .xlsx-kopie en kopieer vervolgens de vertaalde tekstkolommen terug naar het hoofdbestand (Plakken speciaal > Waarden, alleen tekstkolommen, zodat je geen formules overschrijft) of exporteer de VBA-modules en importeer ze in het vertaalde bestand.
  6. Laat grafieken voor later. Een grafiek bevat weinig tekst: een titel, aslabels en een legenda die meestal uit kopcellen komt. Het is vaak sneller om de grafiek in de vertaalde werkmap opnieuw op te bouwen uit dezelfde bereiken, of om de vertaalde tekstkolommen terug te plakken in de oorspronkelijke werkmap, zodat de grafieken en draaitabellen zichzelf bijwerken.

Stap 3: Vertaal het hele bestand

Upload het .xlsx-bestand op de documentvertaler-pagina, kies de doeltaal en controleer de getoonde prijs voordat je betaalt. Een upload van het hele bestand vertaalt elke tekstcel op elk blad in één taak, waardoor het gemakkelijker is om een productnaam hetzelfde te houden in rij 3 en rij 3.000. Onze gids over een vertaalwoordenlijst opbouwen legt uit hoe je termen vastlegt die niet mogen variëren.

Wanneer de taak is voltooid, biedt de Geschiedenispagina beide downloads aan. Gebruik de vertaalde werkmap. Open de tweetalige werkmap alleen om de formulering te bespreken met iemand die beide talen leest.

Als je in Google Sheets werkt, zijn er twee andere routes. Het tabblad Documenten van Google Translate accepteert .xlsx-bestanden tot 10 MB (Google Translate Help); onze gids voor het vertalen van Google Docs vergelijkt de opties. En Sheets heeft een functie GOOGLETRANSLATE(text, source_language, target_language) (Google Docs Editors Help) die je in een nieuwe kolom naast de bron kunt doorvullen. Dat is handig voor één kolom met korte labels, maar de resultaten zijn formules, dus plak ze als waarden voordat je het blad deelt. DeepL vertaalt ook documenten; zie wat de documentlimieten in de praktijk betekenen. Wat je ook gebruikt, voer de checker eerst uit op de bron: tekst in formules, links en grafieken staat op dezelfde plaatsen, ongeacht welke tool het bestand leest.

Stap 4: Controleer de vertaalde werkmap

  1. Gebruik de vergelijkingsmodus. Zet de bron en het vertaalde bestand naast elkaar:

    python3 check_xlsx_text.py --compare "Price list.xlsx" "Price list (translated).xlsx"
    

    Het controleert of elke formule, elk getal en elke datum ongewijzigd is, of codes met letters exact hetzelfde zijn teruggekomen en of elke vervolgkeuzewaarde in de lijst staat. Gebruik het alleen op de vertaalde werkmap. Omdat het tweetalige bestand kolommen verschuift, zou bijna elke cel worden gemeld.

  2. Herbereken. Als een formule na het aanpassen van de labels nog steeds de oude tekst toont, druk op F9 (of Formules > Nu berekenen).

  3. Vertaal de restjes. Gebruik de lijst van de checker uit stap 1: linktekst, notities, grafiektitels en eventuele cellen waarvan je de opmaak hebt gewist.

  4. Let op afgekapte tekst. Vertalingen zijn vaak langer dan de bron, en korte strings groeien het meest. Het W3C citeert IBM-richtlijnen die de gemiddelde uitbreiding van Engels naar Europese talen op 200–300% stellen voor tekst tot 10 tekens (W3C). Kolomkoppen zijn kort, dus maak kolommen breder of zet Tekstterugloop aan waar ze afgekapt worden.

  5. Controleer de weergave van getallen en datums. De waarden zijn niet aangepast, maar "4.50" moet voor een Duitse lezer misschien als "4,50" worden weergegeven. Dat is een celopmaak of een regionale instelling, geen vertaling.

  6. "Repareer" functienamen niet. Als de Franse Excel van een collega SOMME toont in plaats van SUM, dan toont Excel zijn eigen gelokaliseerde functienamen; de formule is hetzelfde.

  7. Stel rechts-naar-links werkbladen in. Zet voor Arabisch, Hebreeuws, Perzisch of Urdu Pagina-indeling > Werkblad rechts-naar-links aan en controleer de celuitlijning.

  8. Laat het nalezen door een vloeiende lezer als het naar klanten gaat, zoals een prijslijst of een productcatalogus. Een machinevertaling is een goed eerste concept, niet het definitieve.

CSV- en TSV-bestanden

Een .csv-bestand heeft geen formules, opmaak of dropdowns, dus de meeste problemen hierboven verdwijnen. Drie dingen zijn anders:

  • De kopregel wordt niet vertaald. De handler behandelt de eerste rij als koppen en vertaalt alleen datarijen. Vertaal de koppen handmatig, of kopieer ze naar een datarij voordat je uploadt en zet ze daarna terug.
  • Een kolom wordt als geheel vertaald. Als een cel in een kolom een letter bevat, wordt elke cel in die kolom met een letter verstuurd, codes inbegrepen. De vergelijkingsmodus leest alleen .xlsx, dus controleer een CSV-codekolom handmatig: kopieer hem uit beide bestanden naar één werkblad en vergelijk de twee kolommen met =EXACT(A2,B2).
  • Een CSV komt terug met komma's als scheidingsteken. Welk scheidingsteken de bron ook gebruikte, de vertaalde CSV gebruikt komma's; een .tsv-bestand behoudt zijn tabs. In onze test kwam een puntkomma-gescheiden CSV terug met komma's als scheidingsteken, waarbij decimale komma's zoals "4,50" tussen aanhalingstekens bleven staan. Het bestand is UTF-8 zonder byte order mark. Microsoft zegt dat Excel een UTF-8-CSV normaal opent wanneer het die markering heeft, en raadt anders aan om het te importeren via Gegevens > Gegevens ophalen > Uit tekst/CSV (Microsoft Support). Als je dubbelklikt op het bestand en verminkte accenten ziet, importeer het dan op die manier.

Als je gegevens in een werkmap met formules staan, vertaal dan de .xlsx. Exporteren naar CSV om te vertalen gooit elke formule weg.

Veelvoorkomende problemen

ProbleemWaarschijnlijke oorzaakWat te doen
Een hele kolom zegt nog steeds "In stock"De woorden staan in een IF-formuleVerplaats ze naar labelcellen en laat de formule ernaar verwijzen
Een dropdown weigert de vertaalde waardeDe toegestane waarden zijn in de validatieregel getyptWijzig de Bron van de regel naar een celbereik en vertaal het bereik
Een productcode is gewijzigdHij bevat letters, dus is hij naar de vertaler gestuurdHerstel het vanuit de bron; voer de vergelijkingsmodus uit bij elke levering
Eén cel is helemaal niet vertaaldDe cel heeft gemengde opmaak of bevat een linkVerwijder de opmaak of bewerk de linktekst en vertaal opnieuw of corrigeer handmatig
De grafiek of de macro's zijn verdwenenDe bibliotheek die wordt gebruikt om het bestand te herschrijven, slaat ze niet opVertaal een .xlsx-kopie en zet de vertaalde tekst terug in het origineel
Totalen kloppen niet in het tweetalige bestandDe toegevoegde kolommen verschuiven waarden, maar niet formules of opmaakGebruik de vertaalde werkmap voor alle berekeningen
Accenten zien er verhaspeld uit in een vertaalde CSVExcel heeft de verkeerde codering geradenImporteer het via Gegevens > Gegevens ophalen > Uit tekst/CSV
De upload wordt geweigerdHet bestand is .xls of er is een wachtwoord nodig om het te openenSla het op als een normaal .xlsx-bestand zonder openingswachtwoord (alleen bladbeveiliging is prima)

Hetzelfde idee geldt voor dia's: een PowerPoint-presentatie bewaart tekst ook op plaatsen die een vertaler overslaat, en de checker voor dat artikel werkt hetzelfde als deze.

Gerelateerde berichten