Új hozzászólás Aktív témák

  • Bazs87

    tag

    Sziasztok!

    Érdekes problémával találtam magam szembe:

    Feladat:
    van egy laza 25ezer soros német-lengyel fordításom, ami egy programból (Siemens TIA Portal) lett exportálva. A "text"manipulálás után szeretném visszatölteni ezt. Persze az új verzió egy libből kikeresve lefordítja amit letud (szakmai szöveg, nem érdemes összekötni semmilyen értelmes fordítóval, max ha gálvölgyi show-t és elégedetlen ügyfelet akarunk)

    Megoldási elv(eddig):
    létrehoztam egy vbs ole kapcsolatot excellel. (ne kérdezzétek miért, nekem komfortosabb így, mint az excel makrófelületével dolgozni)
    A program megnyitja a szótár excelt és az A oszlop elemei lesznek a key-ek, B oszlop azonos sorainak elemei pedig az adatok.
    Excel becsuk, új doku kinyit és egy sima compare után beírogatom a lengyel verziót. Ezután elmentem és mindenki boldog....

    Probléma:
    a txt sorai és az excel cellák tartalma nem azonos szintaxúak -> tele vannak a cellákon belüli "értékek"/adatok sortöréssel.
    Erre felkészültem, ezért nem txt a szótár fájlom, hanem excel.
    A dictionary key eleme viszont vmiért ezeket nem veszi át.

    Másik perverzebb ötletem az lenne, hogy még excelben helyettesíteni kell a vbcrln karaktereket valamilyen egyéb karakterre v láncra amit a mod végén visszahelyettesítenék (és ugye nincs a szövegben persze), de ugye ez plusz munka és nem vagyok túl szorgalmas ilyen fronton.
    Szeretek tanulni a hibámból, mert minden bizonyára elvi hibám van.
    Kérésre rendelkezésetekre tudom bocsátani az adatokat is, a kód így fest:

    xlsx_dict = "U:\6_798\Translate\v01\pl.xlsx"
    xlsx_trgt = "U:\6_798\Translate\v01\TIAProjectTexts_mod.xlsx"

    Set fso = CreateObject( "Scripting.FileSystemObject" )
    Set szotar = CreateObject("Scripting.Dictionary")

    Set objExcel = CreateObject("Excel.Application")

    if not fso.FileExists(xlsx_dict) then
    MsgBox xlsx_dict + " nicht gefunden"
    WScript.Quit()
    end if

    if not fso.FileExists(xlsx_trgt) then
    MsgBox xlsx_trgt + " nicht gefunden"
    WScript.Quit()
    end if

    objExcel.WorkBooks.Open xlsx_dict
    Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)

    'dict aufladen
    for i=1 to 532
    tmp1 = cStr(objSheet.Cells(i,1).Value)
    tmp2 = cStr(objSheet.Cells(i,2).Value)

    if not szotar.exists(tmp1) then
    szotar.add tmp1, tmp2
    else
    'MsgBox "Problem mit key: " + tmp1
    end if
    next

    objExcel.ActiveWorkbook.Save
    objExcel.ActiveWorkbook.Close


    objExcel.WorkBooks.Open xlsx_trgt
    Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)

    ' Übersetzen
    for i=2 to 24257
    dtext = objSheet.Cells(i,5).Value
    if szotar.exists(dtext) then
    objSheet.Cells(i,6).Value = szotar(dtext)
    else
    '
    end if
    next

    objExcel.ActiveWorkbook.Save
    objExcel.ActiveWorkbook.Close


    objExcel.Application.Quit

    Set objSheet = nothing
    set objExcel = nothing
    Set szotar = nothing
    Set fso = nothing

    msgBox "Fertig"

    Köszönöm az esetleges ötleteket!
    Követem a fórumot és öröm olvasni a profi megoldásaitokat!

Új hozzászólás Aktív témák