Condividi:        

Come Tradurre un testo inserito in una cella di Excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Come Tradurre un testo inserito in una cella di Excel

Postdi Maury170419 » 10/07/21 11:51

Ciao a Tutti da Maurizio
Il mio problema e questo :
Su di un foglio di Excel vorrei inserire nella cella (A1 e B1 ) il nome della lingua desiderata in Pratica Di (Input) e (Output)
Mentre nella Cella (A2) Vorrei immettere un testo che a sua volta mi venisse fatta la traduzione ed inserita nella cella (B2)
Come ad Esempio :
Cella (A1).value=Inglese
Cella (B1).Value=Italiano

Testo Della Cella (A2).Value="Welcome! What a lovely morning, isn't it? "
Testo Tradotto della Cella (B2).value="Benvenuto! Che bella mattinata, vero? "

Tutto qui.

Io Nel mio piccolo ho trovato su internet un video che faceva vedere questa cosa in forma leggermente diversa dalla mia appena descritta; Ma comunque non è funzionante
C'é qualcuno di voi che vorrebbe dare un occhiata a questo progetto
Grazie infinite sin da ora da A.Maurizio
(P.s) Premetto che la traduzione dovrebbe essere fatta da e per dal Traduttore di Google

Questo e il Link Per Scaricare Il Mio File Di prova:
https://app.box.com/s/k62jtsbqocuxnbfahtrr9m0we2nagan5
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Sponsor
 

Re: Come Tradurre un testo inserito in una cella di Excel

Postdi Anthony47 » 11/07/21 00:14

Avevo gia' presentato qualcosa che aiutasse a tradurre tramite translator.google.com; ad esempio vedi viewtopic.php?t=102246#p591986
Nel frattempo la struttura di translator e' stata ampiamente modificata (e verra' ancora modificata nel futuro) e quindi le macro lì presentate non sono piu' funzionanti.

Il nuovo file dimostrativo e' scaricabile qui: https://www.dropbox.com/s/4lzt9ucscipcz ... .xlsm?dl=0

Le frasi da tradurre vanno inserite in colonna A
Le traduzioni saranno inserite in colonna B
La macro infine fa la traduzione all'indietro, e inserisce "la traduzione della traduzione" in colonna C, in modo da poter controllare la bonta' della traduzione

La macro utilizzata:
Codice: Seleziona tutto
Sub GoogTrans2()
Dim IE As Object, Trans As String, snarT As String
Dim I As Long, LastA As Long, checkBack As Boolean
Dim Coll1 As Object, cTrad As String, getOut As Boolean
'
'Se Inglese ->Italiano:
Trans = "?sl=en&tl=it"          '<<< SL=Inglese&TL=Italiano
snarT = "?sl=it&tl=en"          '<<< SL=Italiano&TL=Inglese
checkBack = True                '<<< Esegue traduzione al contrario? True /False
'
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "https://translate.google.it/" & Trans & "&op=translate"
AppActivate Application.Caption
DoEvents
MsgBox ("Accettare le condizioni Google prima di chiudere il Messaggio")

LastA = Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To 2
    IE.Visible = True
    If j = 1 Then
        operat = Trans & "&text="
    Else
        operat = snarT & "&text="
    End If
    For I = 2 To LastA
        If Cells(I, j) <> "" Then
            With IE
                .navigate "https://translate.google.it/" & operat & Cells(I, j).Value & "&op=translate"
                Application.Wait (Now + TimeValue("0:00:01"))
                Do While .busY: DoEvents: Loop    'Attesa not busy
                Do While .readyState <> 4: DoEvents: Loop 'Attesa documento
                myWait (1)
                Set Coll1 = IE.document.getElementsByClassName("J0lOec")
                cTrad = ""
                For k = 1 To 10
                    myWait (1)
                    If cTrad = IE.document.getElementsByClassName("J0lOec")(0).getElementsByTagName("span")(2).innertext Then
                        If getOut = True Then Exit For
                        getOut = True
                    Else
                        getOut = False
                        cTrad = IE.document.getElementsByClassName("J0lOec")(0).getElementsByTagName("span")(2).innertext
                    End If
                Next k
                Debug.Print cTrad
                cTrad = ""
                Set Coll1 = IE.document.getElementsByClassName("J0lOec")(0).getElementsByTagName("span")
                For k = 0 To Coll1.Length - 1
                    If Left(Coll1(k).getAttribute("jsaction"), 6) = "click:" Then
                        Debug.Print k, Coll1(k).getAttribute("jsaction")
                        Debug.Print Coll1(k).innertext & vbCrLf
                        cTrad = cTrad & Coll1(k).innertext & vbCrLf
                    End If
                Next k
                Cells(I, 1 + j).Value = Replace(cTrad, "Ripristina originale", "", , , vbTextCompare)
            End With
        End If
    Next I
If checkBack = False Then Exit For
Next j
'    Stop             'solo uso debug, poi rimuovere
IE.Quit
Set IE = Nothing
MsgBox ("Comppletato...")
End Sub

Sub myWait(myStab As Single)
Dim myStTiM As Single
'
    myStTiM = Timer
    Do          'wait myStab
        DoEvents
        If Timer > myStTiM + myStab Or Timer < myStTiM Then Exit Do
    Loop
End Sub

I parametri sono impostati nelle righe marcate <<<; in particolare la lingua Sorgente (SL) e la lingua di traduzione (TL) e il "controllo all'indietro"; la macro utilizza una sessione di InternetExplorer per dialogare con Translator.
All'inizio la macro si ferma con un message box probabilmente poco visibile che invita ad accettare i termini di utilizzo di Google propedeutici all'accesso al servizio; fatta questa accettazione devi attivare la finestra di Excel e chiudere il messagebox per continuare la macro.

Finche' va do vrebbe funzionare :D

Il codice della tua Function Translate (a parte che manca l'istruzione che fa il Send della request) mi pare sia allineata a una versione molto passata di translator.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Come Tradurre un testo inserito in una cella di Excel

Postdi Maury170419 » 11/07/21 09:06

Ciao Anthony47 Come sempre sei Superlativo
Anche sé a dire il vero ho riscontrato due cosine che non vanno e che sono :

1 ) Non appena ho copiato il tuo listato in un modulo e poi lo richiamato
Si e subito fermato il tutto dandomi errore in questa posizione :
Codice: Seleziona tutto
IE.Visible = True

Il ché lo trovato molto strano anche io
In quanto e la prima volta che mi capita di vederlo in quella posizione "L'errore"
Ma anche se è poco ortodosso
L'ho risolto inserendo momentaneamente il classico ("On Error Goto Finish")

2 ) Quando poi si apre il Brouser Della Pagina Traslator di Google
La pagina Risulta Vuota ; Come se stesse aspettando un dato qualsiasi da tradurre
Proprio come si vede nell'immagine :
[img]
Immagine
[/img]

Perché mi succedete tutto questo secondo te grazie ancora di tutto .
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Come Tradurre un testo inserito in una cella di Excel

Postdi Anthony47 » 11/07/21 12:14

Anthony ha scritto:All'inizio la macro si ferma con un message box probabilmente poco visibile che invita ad accettare i termini di utilizzo di Google propedeutici all'accesso al servizio; fatta questa accettazione devi attivare la finestra di Excel e chiudere il messagebox per continuare la macro.

Maury ha scritto:Quando poi si apre il Brouser Della Pagina Traslator di Google
La pagina Risulta Vuota ; Come se stesse aspettando un dato qualsiasi da tradurre

Ecco la prova che il messagebox e' proprio invisibile...
All'inizio Google chiede di accettare alcune condizioni, cosa che devi fare manualmente su InternetExplorer; quando hai fatto (e quindi visualizzi Translator normalmente, come nella tua immagine) vai su Excel e chiudi il messagebox: la macro continuera' eseguendo le traduzioni.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Come Tradurre un testo inserito in una cella di Excel

Postdi Maury170419 » 11/07/21 16:48

Ciao Anthony47
Chiedo scusa per la mia novantunesima volta , per aver fatto nuovamente una Gaff nei tuoi confronti.
Ma come sempre non era la tua Procedura ad avere dei problemi di Visualizzazione ed emissione dei dati.
Ma la mia idiozia di voler tentare altre strade fatte in precedenza con altri progetti sempre legati alle pagine web.

Mi spiego meglio: E un po'' di tempo che sul cellulare ricevo dei messaggi che dicono che tra un po di tempo
Internet Explorer cesserà d'esistere , con l'arrivo del nuovo Sistema Operativo ("Windows 11")
Pertanto mi sono subito proposto mentalmente la domanda ; "Ma allora tutta la fatica che ho fatto e ho fatto fare a tutte quelle persone che come te mi hanno aiutato a capire qualche cosa di programmazione" Svanisce tutto viene spazzato via tutto in un baleno.
Allora per prova sono andato sulle Impostazioni del mio pc e ho per sbaglio cambiato da L'apertura dei )Browser)
che da (Internet Explorer) sono passato a ( Edge) Tutto qui !
Pertanto se non mi fosse venuto la bella idea di provare i miei programmi fatti in precedenza.
; Forse non mi sarei mai accorto di nulla.
Riportando nuovamente tutto alla normalità ; Come per magia anche il tuo Programma a funzionato a meraviglia
Quello che però non mi è chiaro e perché nella cella (C) risulta un altra traduzione in inglese
Che poi e quasi la trascrizione esatta presa dalla prima colonna (A) tutto qui !

Ma cosa dire per il resto !
Torno a Ripetere che sei sublime come sempre
Io sono indietro anni luce
Figurati che mi areno ancora in frammenti di pagine web che all'apparenza sembrano tutte uguali; Ma che poi tanto uguali non lo sono
Perché in linea di massima sono riuscito a comprendere il suo meccanismi Per scaricare i dati
Ma poi però arrivo fino ad un certo punto e non c'é più verso di andare avanti.
Un po' come riuscire ad andare a piedi fino a Roma; Senza poi riuscire a vedere il papa.

Ma non importa io non demordo Ciao e Grazie ancora di tutto .
W L'italia calcistica e il tennis di Berrettini contro Djokovic N1
Un po' come te per la programmazione
Ciao e Buona Serata.
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05

Re: Come Tradurre un testo inserito in una cella di Excel

Postdi Anthony47 » 12/07/21 22:05

La colonna C e' di verifica, serve a controllare all'inverso la traduzione fatta; probabilmente e' inutile su frasi semplici, ma su frasi piu' complesse potresti accorgerti che il traduttore ha preso un abbaglio o che la frase di partenza non e' perfettamente formata.
Ad esempio, se traduciamo la frase (sbagliata) che abbiamo visto in questi giorni "It's coming Rome" ("correzione" storpiata di "It's coming home"), il traduttore ci restituira' "Sta arrivando Roma" e la verifica in colonna C ci dara' come traduzione della traduzione "Rome is coming", evidenziando (nel confronto tra colonna A e colonna C) che qualcosa nel processo e' andato storto (nel nostro caso la frase corretta dovrebbe essere "It's coming to Rome").

Puoi abilitare /disabilitare questa funzione con checkBack = True /False nell'area parametri in testa alla macro.

La macro non è "lineare" perche' il sito e' abbastanza complesso, per cui ho fatto fatica a capire quando il risultato e' effettivamente pronto senza ricorrere a una attesa "lunga abbastanza" (aspetto max 10 sec a blocchi di 1 sec); idem la costruzione della frase tradotta, che (nel sorgente del sito) e' suddivisa in numerosi spezzoni.

Insomma e' un esperimento che poco si presta per illustrare le tecniche di raccolta dal web.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Come Tradurre un testo inserito in una cella di Excel

Postdi Maury170419 » 14/07/21 12:55

Grazie come sempre per le tue delucidazioni in merito
Ora ho capito gran parte del tuo progetto che come sempre e fantastico
Ciao Buona giornata e Grazie ancora di Tutto.
Saluti anche al resto dello staf di pc facile (Forum) da A.Maurizio
Maury170419
Utente Senior
 
Post: 159
Iscritto il: 31/10/16 09:05


Torna a Applicazioni Office Windows


Topic correlati a "Come Tradurre un testo inserito in una cella di Excel":


Chi c’è in linea

Visitano il forum: Nessuno e 36 ospiti