Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Copiare testo da word ad excel

585 views
Skip to first unread message

AC

unread,
Jan 4, 2006, 2:30:39 AM1/4/06
to
Salve è possibile tramite un'istruzione VBA e con un macro copiare dei campi
predefiniti su un foglio di excel in determinate celle??
Grazie

Giovanni Zezza

unread,
Jan 4, 2006, 5:08:25 AM1/4/06
to
AC, nel messaggio <zQKuf.110711$65.32...@twister1.libero.it>, scriveva:

>Salve č possibile tramite un'istruzione VBA e con un macro copiare dei campi


>predefiniti su un foglio di excel in determinate celle??

Sě, č possibile, ma con le informazioni fornite č difficile dire molto di
piů.

Per leggere da Word devi usare l'oggetto Selection o un oggetto Range, o
una proprietŕ o un metodo che restituiscano un oggetto Selection o un
oggetto Range.

Per scrivere su Excel devi parimenti usare un oggetto Range di Excel, o
una proprietŕ o un metodo che restituiscano un oggetto Range.

Tra l'altro, non hai detto se la macro sarebbe ospite di Word o di Excel.
Supponiamo di lavorare in Word.

Dim Testo
Dim Brano As Range
Dim Excel As Object
Dim Cartella As Object

Set Brano = ActiveDocument.Paragraphs(1).Range
'oppure:
Set Brano = ActiveDocument.Range(1, 10)
....
'ci sono diversi modi per accedere a del testo in Word, tutto dipende
'naturalmente da dov'č il testo a cui si vuole accedere. Alla fine
'comunque si arriva ad un oggetto Range

'Apriamo Excel:
Set Excel = CreateObject("Excel.Application")
'Se si vuole accedere ad un'istanza giŕ attiva di Excel:
'Set Excel = GetObject(,"Excel.Application")

Excel.Visible = True

'Creiamo (se necessario) una cartella vuota:
Set Cartella = Excel.WorkBooks.Add

'Scriviamo il testo recuperato da Word nella cella A1 del primo foglio
'della cartella.
Cartella.Worksheets(1).Range("A1").Value = Brano.Text

Lascio a te le operazioni di pulizia al termine della macro (eventuale
chiusura di Excel e di Word, ecc.) e la gestione degli errori.

Ciao.

AC

unread,
Jan 4, 2006, 6:06:43 AM1/4/06
to
Grazie per la risposta, e scusa se non sono stato preciso.
1. ho un testo in word, tipo lettera fax dei modelli di word2000, dove ci
sono i campi: destinatario - data - oggetto.
2. dopo aver compilato i fax avrei bisogno che con una macro mi andasse a
copiare in un foglio di excel chiamato archivio06 nelle colonne A - B - C
rispettiavamene i dati del punto 1, e precisamente fax 1 su riga 2, fax 2 su
riga 3, e così via.
In modo tale da tenere un archivio dei fax trasmessi.
Spero di essere stato chiaro nel spiegare il tutto.
Saluti.
Alb


"Giovanni Zezza" <zezz...@tin.it> ha scritto nel messaggio
news:fr5nr1dpq0fs2c71i...@4ax.com...


> AC, nel messaggio <zQKuf.110711$65.32...@twister1.libero.it>, scriveva:
>

> >Salve è possibile tramite un'istruzione VBA e con un macro copiare dei


campi
> >predefiniti su un foglio di excel in determinate celle??
>

> Sì, è possibile, ma con le informazioni fornite è difficile dire molto di
> più.


>
> Per leggere da Word devi usare l'oggetto Selection o un oggetto Range, o

> una proprietà o un metodo che restituiscano un oggetto Selection o un


> oggetto Range.
>
> Per scrivere su Excel devi parimenti usare un oggetto Range di Excel, o

> una proprietà o un metodo che restituiscano un oggetto Range.


>
> Tra l'altro, non hai detto se la macro sarebbe ospite di Word o di Excel.
> Supponiamo di lavorare in Word.
>
> Dim Testo
> Dim Brano As Range
> Dim Excel As Object
> Dim Cartella As Object
>
> Set Brano = ActiveDocument.Paragraphs(1).Range
> 'oppure:
> Set Brano = ActiveDocument.Range(1, 10)
> ....
> 'ci sono diversi modi per accedere a del testo in Word, tutto dipende

> 'naturalmente da dov'è il testo a cui si vuole accedere. Alla fine


> 'comunque si arriva ad un oggetto Range
>
> 'Apriamo Excel:
> Set Excel = CreateObject("Excel.Application")

> 'Se si vuole accedere ad un'istanza già attiva di Excel:

Giovanni Zezza

unread,
Jan 4, 2006, 6:58:40 AM1/4/06
to
AC, nel messaggio <7%Nuf.28211$eD5.4...@twister2.libero.it>, scriveva:

>1. ho un testo in word, tipo lettera fax dei modelli di word2000, dove ci
>sono i campi: destinatario - data - oggetto.

Non ho idea di come sia organizzato il documento fax; mi sembra probabile
che quelli che chiami campi siano celle di una tabella, presumibilmente la
prima del documento.

Tutte le tabelle sono riferite nella collezione Tables di Document:

Dim Tabelle As Tables
Set Tabelle = ActiveDocument.Tables

Prendiamo la prima:

Dim Tabella As Table
Set Tabelle = Tabelle(1)

Il metodo Table.Cell(riga, colonna) restituisce una cella della tabella.
Ponendo che il destinatario sia nella cella 1,2:

Dim Brano As Range
Set Brano = Tabella.Cell(1, 2).Range

Il testo sarą contenuto in Brano.Text, che copi in Excel nel solito modo, a
meno di aggiustamenti (potrebbe essere forse il caso di cancellare a-capo e
altro).

Se l'ipotesi della tabella non č corretta, dovrai vedere dove sono in Word
i dati che vuoi copiare e come recuperarli (se č il caso di fare ricerche
di testo o altro).

Ciao.

maurizio

unread,
Jan 5, 2006, 1:56:02 AM1/5/06
to
nON MI FUNZIONA LA GUIDA FONETICA PER IL GIAPPONESE, OSSIA NON MI METTE IL
FURIGANA SOPRA I KANJI. cHE COSA DEBBO FARE.

AC

unread,
Jan 5, 2006, 2:09:20 AM1/5/06
to
Grazie ora provo.

--

"Giovanni Zezza" <zezz...@tin.it> ha scritto nel messaggio

news:s4cnr1l5brvbpdcto...@4ax.com...


> AC, nel messaggio <7%Nuf.28211$eD5.4...@twister2.libero.it>, scriveva:
>
> >1. ho un testo in word, tipo lettera fax dei modelli di word2000, dove ci
> >sono i campi: destinatario - data - oggetto.
>
> Non ho idea di come sia organizzato il documento fax; mi sembra probabile
> che quelli che chiami campi siano celle di una tabella, presumibilmente la
> prima del documento.
>
> Tutte le tabelle sono riferite nella collezione Tables di Document:
>
> Dim Tabelle As Tables
> Set Tabelle = ActiveDocument.Tables
>
> Prendiamo la prima:
>
> Dim Tabella As Table
> Set Tabelle = Tabelle(1)
>
> Il metodo Table.Cell(riga, colonna) restituisce una cella della tabella.
> Ponendo che il destinatario sia nella cella 1,2:
>
> Dim Brano As Range
> Set Brano = Tabella.Cell(1, 2).Range
>

> Il testo sarà contenuto in Brano.Text, che copi in Excel nel solito modo,


a
> meno di aggiustamenti (potrebbe essere forse il caso di cancellare a-capo
e
> altro).
>

> Se l'ipotesi della tabella non è corretta, dovrai vedere dove sono in Word
> i dati che vuoi copiare e come recuperarli (se è il caso di fare ricerche

Giovanni Zezza

unread,
Jan 5, 2006, 5:51:31 AM1/5/06
to
maurizio, nel messaggio
<8CAECE52-1768-45F8...@microsoft.com>, scriveva:

>nON MI FUNZIONA LA GUIDA FONETICA PER IL GIAPPONESE, OSSIA NON MI METTE IL
>FURIGANA SOPRA I KANJI. cHE COSA DEBBO FARE.

Capisco.

E questo, di preciso, che cosa ha a che vedere con "Copiare testo da word
ad excel", a cui rispondi?

Se vuoi introdurre un argomento nuovo, č meglio che inizi un nuovo thread,
piuttosto che attaccarti ad uno che non c'entra nulla.

Non sono purtroppo in grado di aiutarti per il tuo problema.

Ciao.

AC

unread,
Jan 9, 2006, 9:26:32 AM1/9/06
to
Buonasera,
mi sento proprio una "socca",
scusatemi ma ho provato le istruzioni scritte da Giovanni Zecca, e non
riesco a far funzionare niente.
Praticamente nel foglio di word, chiamato "faxgenerico", c'è una specie di
tabella formata da 4 righe e 4 colonne e un file di excel chiamato
"archivio06"
A questo punto dopo aver compilato il faxgenerico, avrei bisogno che con una
macro mi andasse a copiare sul foglio di exel precisamente questi dati:
Su word: cella B1 in colonna C
cella D2 in colonna B
cella B3 in colonna D
cella D4 in colonna A
quando copia in excel dovrebbe andare a scrivere nella riga successiva a
quella scritta in precedenza.
Il mio problema è quello di far riconoscere le celle di word.
Grazie per l'aiuto e
saluti
Alb

Giovanni Zezza

unread,
Jan 9, 2006, 12:11:35 PM1/9/06
to
AC, nel messaggio <souwf.119342$65.34...@twister1.libero.it>, scriveva:

>scusatemi ma ho provato le istruzioni scritte da Giovanni Zecca, e non
>riesco a far funzionare niente.

"Niente" č un po' troppo poco. Qualcosa dovresti cercare di arrivare a
fare, magari la cosa sbagliata, ma comunque qualcosa. Poi io posso cercare
di aiutarti, ma partire da nulla č un po' difficile.

Esattamente che cosa non funziona?

>Praticamente nel foglio di word, chiamato "faxgenerico", c'č una specie di


>tabella formata da 4 righe e 4 colonne

Non esiste in word qualcosa come "una specie di tabella", o č una tabella o
non lo č.

>A questo punto dopo aver compilato il faxgenerico, avrei bisogno che con una
>macro mi andasse a copiare sul foglio di exel precisamente questi dati:
>Su word: cella B1 in colonna C
> cella D2 in colonna B
> cella B3 in colonna D
> cella D4 in colonna A

I riferimenti alle celle in Word seguono lo stile "R1C1" di Excel (almeno
se vi si accede attraverso il metodo Table.Cell), cioč sia la riga che la
colonna sono rappresentati da numeri, e nell'ordine: numero riga, numero
colonna.

Riassumendo quanto detto finora, si potrebbe partire da qualcosa del
genere:

Dim Excel As Object
Dim Cartella As Object

Dim Foglio

Dim Tabelle As Tables
Dim Tabella As Table

Set Tabelle = ActiveDocument.Tables
Set Tabella = Tabelle(1)

'Apriamo Excel:
Set Excel = CreateObject("Excel.Application")

'Se si vuole accedere ad un'istanza giŕ attiva di Excel:


'Set Excel = GetObject(,"Excel.Application")

Excel.Visible = True

'Creiamo (se necessario) una cartella vuota:
Set Cartella = Excel.WorkBooks.Add

Set Foglio = Cartella.Worksheets(1)

' da Word B1 a Excel C1
Foglio.Range("C1").Value = Tabella.Cell(1, 2).Range.Text
' da Word D2 a Excel B1
Foglio.Range("B1").Value = Tabella.Cell(2, 4).Range.Text
' da Word B3 a Excel D1
Foglio.Range("D1").Value = Tabella.Cell(3, 2).Range.Text
' da Word D4 a Excel A1
Foglio.Range("A1").Value = Tabella.Cell(4, 4).Range.Text

Questo per un documento. Per piů documenti dovrai scrivere un ciclo.

>quando copia in excel dovrebbe andare a scrivere nella riga successiva a
>quella scritta in precedenza.

In precedenza quando?

Devi prendere i dati da una serie di documenti Word? in che modo pensavi di
scorrere i documenti?

Almeno come spostarti alla riga successiva in Excel dovresti sapere come
farlo. Voglio dire, saprai fare:

Riga = Riga + 1

Poi componi la stringa di riferimento della cella, oppure usi il metodo
Worksheet.Cells, al posto di Range, con stile di riferimento R1C1:

' da Word B1 a Excel C1
Foglio.Cells(Riga, 3).Value = Tabella.Cell(1, 2).Range.Text
' da Word D2 a Excel B1
Foglio.Cells(Riga, 2).Value = Tabella.Cell(2, 4).Range.Text
....

Ciao.

Giovanni Zezza

unread,
Jan 9, 2006, 7:12:18 PM1/9/06
to
Giovanni Zezza, nel messaggio
<qh55s11n41ad22jov...@4ax.com>, scriveva:

> Set Tabelle = ActiveDocument.Tables
> Set Tabella = Tabelle(1)

Naturalmente, qui suppongo che il fax da archiviare sia il documento
attivo e aperto in Word. Se è un documento su disco, dovrai dargli il
percorso, aprirlo, ecc (se non sai come fare se ne può parlare).
Comunque alla fine dovrai (in luogo di ActiveDocument) ottenere
un'istanza di Document che si riferisca al documento fax.

> 'Creiamo (se necessario) una cartella vuota:
> Set Cartella = Excel.WorkBooks.Add
> Set Foglio = Cartella.Worksheets(1)

Anche qui, se la cartella Excel è già presente, e la vuoi aprire,
invece del metodo Add puoi usare il metodo Open, fornendogli percorso
completo e nome del file:

Set Cartella = Excel.WorkBooks.Open("percorso\archivio06.xls")

Se il foglio in cui archivi i dati si chiama "fax", puoi riferirlo
con:

Set Foglio = Cartella.Worksheets("fax")

Per posizionarti sulla prima riga libera, puoi tentare qualcosa del
genere:

Cartella.Range("A1").End(xlDown).Offset(1, 0)

(Supponendo che la colonna A non abbia celle vuote)

Ciao.

0 new messages