Discussione:
inversione righe
(troppo vecchio per rispondere)
alphubel
2006-01-30 13:26:29 UTC
Permalink
ciao:
ho un glossario strutturato in questo modo:

definizione nella lingua X (riga 1)
traduzione nella lingua Y (riga 2)
spiegazione del termine (riga 3)
riga vuota (riga 4)
definizione nella lingua X (riga 5)
traduzione nella lingua Y (riga 6)
spiegazione del termine (riga 7)
riga vuota (riga 8)

e così via.

Ho l'esigenza di invertire tra loro la prima e la seconda riga di ciascun
paragrafo.
Per esempio: riga 1 al posto della riga 2 e riga 2 al posto della riga 1 nel
1° paragrafo. riga 5 al posto della riga 6 e riga 6 al posto della riga 5 nel
secondo paragrafo....senza cambiare la parte restante della struttura.
Posso farlo?Se sì, come? Grazie a chi vorrà darmi unaa risposta.
Giovanni Zezza
2006-01-31 10:09:33 UTC
Permalink
alphubel, nel messaggio
Post by alphubel
Ho l'esigenza di invertire tra loro la prima e la seconda riga di ciascun
paragrafo.
Per esempio: riga 1 al posto della riga 2 e riga 2 al posto della riga 1 nel
1° paragrafo. riga 5 al posto della riga 6 e riga 6 al posto della riga 5 nel
secondo paragrafo....senza cambiare la parte restante della struttura.
Posso farlo?Se sì, come? Grazie a chi vorrà darmi unaa risposta.
Come al solito quando si parla genericamente di "righe" e "paragrafi" (e
mettiamoci anche "glossario"), senza chiarire il contesto, io non ci
capisco nulla.

Questo glossario dov'è: in un file di testo, in un documento Word (un
documento Word NON è un file di testo)...

Facendo finta di aver capito di che cosa si sta parlando, e chiarito una
volta di più che Word NON è lo strumento più adatto per questo genere di
cose, si potrebbe tentare qualcosa del genere:

Public Sub par_swap()
Dim paragrafi As Paragraphs
Dim paragrafo1 As Paragraph
Dim paragrafo2 As Paragraph
Dim swap_text As String
Dim indice1 As Integer
Dim indice2 As Integer
Dim max_ind As Integer
Set paragrafi = ActiveDocument.Paragraphs
max_ind = paragrafi.Count
indice1 = 1
indice2 = indice1 + 1
While indice2 <= max_ind
Set paragrafo1 = paragrafi(indice1)
Set paragrafo2 = paragrafi(indice2)
swap_text = paragrafo1.Range.Text
paragrafo1.Range.Text = paragrafo2.Range.Text
paragrafo2.Range.Text = swap_text
indice1 = indice1 + 4
indice2 = indice1 + 1
Wend
End Sub

che certamente qualcosa fa; se sia quello che si voleva, non saprei dire.
Come al solito, la macro agisce sul documento attivo.

Ciao.
Antonio
2006-01-31 11:16:27 UTC
Permalink
ciao Giovanni,

Innanzitutto ti ringrazio molto per avermi risposto.

Il file originario è un file di testo, convertibile in file doc senza
problemi rinunciando alla formattazione (che peraltro non mi interessa).
Pertanto, potrei utilizzare sia l'uno che l'altro formato.
Se ritieni che text sia più adatto per me va bene.
Ti chiedo solo un favore, da profano.
Come faccio a mettere in pratica la soluzione che mi hai indicato? In
concreto, cosa devo fare? Scusa l'ignoranza e grazie ancora per l'aiuto che
vorrai darmi

Antonio
Post by alphubel
definizione nella lingua X (riga 1)
traduzione nella lingua Y (riga 2)
spiegazione del termine (riga 3)
riga vuota (riga 4)
definizione nella lingua X (riga 5)
traduzione nella lingua Y (riga 6)
spiegazione del termine (riga 7)
riga vuota (riga 8)
e così via.
Ho l'esigenza di invertire tra loro la prima e la seconda riga di ciascun
paragrafo.
Per esempio: riga 1 al posto della riga 2 e riga 2 al posto della riga 1 nel
1° paragrafo. riga 5 al posto della riga 6 e riga 6 al posto della riga 5 nel
secondo paragrafo....senza cambiare la parte restante della struttura.
Posso farlo?Se sì, come? Grazie a chi vorrà darmi unaa risposta.
Giovanni Zezza
2006-01-31 12:21:06 UTC
Permalink
Antonio, nel messaggio
Post by Antonio
Il file originario è un file di testo, convertibile in file doc senza
problemi rinunciando alla formattazione (che peraltro non mi interessa).
Pertanto, potrei utilizzare sia l'uno che l'altro formato.
Se ritieni che text sia più adatto per me va bene.
Era più che altro per capire che cosa intendessi per "riga" e per
"paragrafo": in Word sono una cosa, in un file di testo un'altra.

La macro proposta scambia il testo delle righe, ignorando l'eventuale
formattazione; non so bene che effetto possa avere sulla formattazione in
un documento Word.
Post by Antonio
Ti chiedo solo un favore, da profano.
Come faccio a mettere in pratica la soluzione che mi hai indicato? In
concreto, cosa devo fare?
Incolli la macro nella finestra di codice di Visual Basic Editor (da Word:
Strumenti -> Macro -> Editor di Visual Basic).

Apri il file del glossario in Word (se è un testo lo aprirai come "Solo
testo").

Esegui la macro (Strumenti -> Macro -> Macro; Nome macro: par_swap).

Fai quello che vuoi col file modificato.

La macro è particolarmente stupida e suppone che il formato del glossario
sia assolutamente regolare: 3 righe per ogni termine, una riga di
separazione fra i termini. Se ci sono delle irregolarità (chessò, se a
volte ci possono essere due o più righe di separazione; se a volte oltre a
"traduzione", "definizione", "spiegazione" c'è una quarta riga "commento";
o a volte la riga "spiegazione" è assente...) bisogna pensare qualche altro
metodo più intelligente.

Ciao.
Antonio
2006-01-31 16:15:31 UTC
Permalink
Grazie ancora. Provo a mettere in pratica il tuo consiglio.
Ti farò sapere se ha funzionato. In questo caso avrò risparmiato un bel pò
di tempo!
Antonio
Post by Giovanni Zezza
Antonio, nel messaggio
Post by Antonio
Il file originario è un file di testo, convertibile in file doc senza
problemi rinunciando alla formattazione (che peraltro non mi interessa).
Pertanto, potrei utilizzare sia l'uno che l'altro formato.
Se ritieni che text sia più adatto per me va bene.
Era più che altro per capire che cosa intendessi per "riga" e per
"paragrafo": in Word sono una cosa, in un file di testo un'altra.
La macro proposta scambia il testo delle righe, ignorando l'eventuale
formattazione; non so bene che effetto possa avere sulla formattazione in
un documento Word.
Post by Antonio
Ti chiedo solo un favore, da profano.
Come faccio a mettere in pratica la soluzione che mi hai indicato? In
concreto, cosa devo fare?
Strumenti -> Macro -> Editor di Visual Basic).
Apri il file del glossario in Word (se è un testo lo aprirai come "Solo
testo").
Esegui la macro (Strumenti -> Macro -> Macro; Nome macro: par_swap).
Fai quello che vuoi col file modificato.
La macro è particolarmente stupida e suppone che il formato del glossario
sia assolutamente regolare: 3 righe per ogni termine, una riga di
separazione fra i termini. Se ci sono delle irregolarità (chessò, se a
volte ci possono essere due o più righe di separazione; se a volte oltre a
"traduzione", "definizione", "spiegazione" c'è una quarta riga "commento";
o a volte la riga "spiegazione" è assente...) bisogna pensare qualche altro
metodo più intelligente.
Ciao.
Continua a leggere su narkive:
Loading...