Condividi:        

Macro VBA per gestire dati in InDesign

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

Macro VBA per gestire dati in InDesign

Postdi Londonoffice » 04/11/10 17:51

Cari esperti,

Sottopongo alla vostra bontà e fantasia un nuovo problema. Per favore siate pazienti perché non so nulla di programmazione e ogni cosa mi va spiegata col cucchiaino...
Dunque, ho una serie di file in formato InDesign. Questi file contengono testo in giapponese da tradurre in 4 lingue. Il testo è dislocato in vari box e layer.
Molto del testo contenuto in questi file è costituito da parole di cui esiste una traduzione in fogli excel. In pratica esistono come dei dizionari. In un "file dizionario" si trova una colonna in giapponese, e una ad esempio in italiano, una in spagnolo, ecc. Secondo voi, esiste il modo di creare una macro che mi consenta di cercare ogni parola del dizionario all'interno di tutte le pagine del file di InDesign e sostituirla in italiano? Poi vorrei fare la stessa cosa per le altre lingue.
Esempio.
Ho un "File 1" in formato InDesign.
Ho un file "dizionario" in formato xls con la prima colonna in giapponese, ordinata per lunghezza in modo che il primo risultato trovato sia l'espressione più lunga possibile. Nella seconda colonna ho l'italiano.
Ho un altro file excel che contiene la macro in questione.
Avvio la macro.
Immagino il funzionamento come segue.
La macro accede al dizionario (foglio excel).
Analizza tutto il testo presente, confrontando la prima parola del dizionario nel testo di File 1. Non ve la trova. Cerca la seconda. Nemmeno. La terza parola presente nel dizionario invece è presente nel testo delle pagine di File 1. Viene dunque pescato il termine corrispondente nella colonna a fianco del termine identificato, quindi in italiano. Questo testo italiano va dunque a sovrascrivere all'interno del testo giapponese nel File 1 la parola giapponese cui corrisponde.
Questa operazione viene ripetuta infine per tutte le parole del dizionario. Quando il controllo del dizionario è finito, la macro conclude il suo lavoro.
OK forse sto sognando, ma mi domando se invece questo sogno non possa diventare realtà!
Buona serata.
Londonoffice
Utente Junior
 
Post: 28
Iscritto il: 13/08/10 20:57

Sponsor
 

Re: Macro VBA per gestire dati in InDesign

Postdi Flash30005 » 05/11/10 00:24

Il confronto tra dati su due file si può fare anche in excel ma un conto sono confronto di adti dove se 1 = 1 allora fornisci il corrispondente esempio A
e un conto è una traduzione che non prevede questa "legge" matematica perché una frase cambia di significato se tradotta interamente rispetto a quella tradotta parola per parola non credi?

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro VBA per gestire dati in InDesign

Postdi Londonoffice » 05/11/10 00:51

Ciao Flash, grazie per la risposta.
Dunque... Mettiamo il caso che io parlo di una parola che ho stabilito che sarà sempre la stessa, ad esempio un nome. Ho deciso che "Marco" sarà sempre "Marc". Per me il 100% match è legge e non ci sono contesti che tengano. Poi ovviamente il testo va integrato con il resto delle parole e nel frattempo avviene un controllo umano che corregge gli errori, ma intanto mi risparmio centinaia e centinaia di copia incolla. Per quanto riguarda il confronto di due file in excel, se potessi lavorare solo con excel allora userei Vlookup e tanti saluti, ma purtroppo devo lavorare con InDesign. Mi domando se esiste una via d'uscita per centinaia e centinaia di copia incolla da incubo...
Londonoffice
Utente Junior
 
Post: 28
Iscritto il: 13/08/10 20:57

Re: Macro VBA per gestire dati in InDesign

Postdi Anthony47 » 05/11/10 00:59

Personalmente posso solo dare delle guidelines largamente incomplete.
Innanzitutto mi risulta che il formato InDesign si possa leggere solo con il programma InDesign; quindi il testo di cui parli va esportato in un file di tipo txt su cui potrai poi fare i ragionamenti di sostituzione come suggerito dal file dizionario.

Il vba consente di aprire un file di testo, ad esempio con istruzioni del tipo Open "C:\path\\File.txt" For Input As #1
e analogamente di creare un file di uscita su cui riportare il testo in uscita, del tipo Open "C:\path\fileITA.txt" For Output As #2
Ora gia' qui mi vengono domande a cui non so rispondere, del tipo
1) come si scrive in giapponese (che credo usi caratteri non ascii) in un file txt
2) la gestione della lingua fatta da excel e' analoga a quanto ipoteticamente fatto nel file txt, rendendo quindi comparabili i testi
3) il vba accetta nelle sue variabili di tipo stringa (o variant) un testo in giapponese
Per pudore ho omesso il "punto interrogativo" in fondo a ognuna di queste frasi.

Ora, a parte questi "piccoli dubbi", non resta che organizzare una macro che:
-fa la open del file di input
-fa la open del file di output
-legge una riga dal primo file (istruzione Line Input #)
-splitta la riga in parole (giapponesi), poi una parola alla volta..
--cerca nel dizionario se quella parola giapponese esiste
--se esiste mette nel record (in composizione) di output la parola della colonna Italiano (**)
--se non esiste mette quella originale giapponese
--accoda uno spazio
-finita la riga scrive il record composto sul file di uscita (istruzione Print #) e azzera il record
-ripete per le altre righe del primo file, fino ad eof
-chiude il file di input
-scrive il record su file di output, poi chiude il file di output

Nota **: probabilmente conviene eseguire la traduzione contemporaneamente in tutte le lingue, quindi saranno stati predisposti tanti file di output, ognuno col suo numero identificativo (#3, #4, etc), e altrettanti record da comporre.

Visti i primi tre punti interrogativi non vado oltre questo livello di astrazione, e spero che qualcun altro voglia aggiungere qualcosa di piu' concreto.

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

Re: Macro VBA per gestire dati in InDesign

Postdi Londonoffice » 05/11/10 01:13

Ciao Anthony e grazie di nuovo per l'input. Il problema di un testo giapponese è che non contiene spazi. Ecco perché proponevo di cercare le singole parole dal dizionario nel testo e non le parole del testo nel dizionario, come invece proponi tu (sarebbe ottimo per una lingua dotata di spazi come l'italiano).
Ho appena scoperto che in InDesign esiste una funzione di Find/Change. Questa consente di salvare le quesry in formato xml. L'ideale sarebbe riempire un file xml con i dati del dizionario. Mi permetto di incollare un link:
http://livedocs.adobe.com/en_US/InDesig ... 6A54E6872C
Problema. Per creare il file xml delle query bisogna fare le query una alla volta. Questo chiaramente non aiuta molto, visto che devo inserire source e target word una per una. Invece vorrei esportare dal dizionario alla lista di query per il find replace da spreadsheet (dizionario)
a spreadsheet (query list per il find replace).
Chissà se è possibile??
Londonoffice
Utente Junior
 
Post: 28
Iscritto il: 13/08/10 20:57

Re: Macro VBA per gestire dati in InDesign

Postdi Anthony47 » 05/11/10 02:47

Quello che scrivi non accende particolari lucine, magari aggiunge un punto interrogativo su come si cerca una parola giapponese in una stringa ininterrotta di simboli.
Comunque, a parte questo ulteriore "piccolo dubbio", se esporti da InDesign in xml, si potrebbe (lavorando se e' necessario al contrario) aprire questo file da excel, fare lo scan di ogni termine presente nel dizionario, cercare il termine nel file xlm e sostituirne il valore. Probabilmente piu' lungo che fare l' opposto, ma alla fine importi l' xml in InDesign e il doc e' gia' composto.

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

Re: Macro VBA per gestire dati in InDesign

Postdi Londonoffice » 05/11/10 12:35

Dunque, ho trovato in rete un Applescript che in linea di massima fa esattamente quello che serve a me. Ho anche scoperto che è possibile lanciare script direttamente da InDesign.
Ecco il link a quello script.
http://macscripter.net/viewtopic.php?pid=124551#p124551
Il problema è che uso Windows (in molti sensi è un problema, ehm...) XP.
Secondo voi è possibile convertire lo script qui sopra in un linguaggio comprensibile a Windows? Vedo tra l'altro che InDesign può lanciare script in una serie di linguaggi e formati, tra cui Java, VBA, XML...
Londonoffice
Utente Junior
 
Post: 28
Iscritto il: 13/08/10 20:57

Re: Macro VBA per gestire dati in InDesign

Postdi Londonoffice » 05/11/10 15:42

Aaaah! Alla fine ho trovato niente meno che tra gli script di esempio di InDesign stesso uno script che fa al caso mio. Ho semplicemente dovuto modificare il formato delle liste di parole.
Lo script si chiama: FindChangeByList.jsx
Accidenti, che bello! :)
Ho dovuto sbattere la testa un po' per scoprire che c'erano script incorporati...
Grazie comunque delle idee!
Londonoffice
Utente Junior
 
Post: 28
Iscritto il: 13/08/10 20:57


Torna a Applicazioni Office Windows


Topic correlati a "Macro VBA per gestire dati in InDesign":


Chi c’è in linea

Visitano il forum: Nessuno e 40 ospiti