>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.
"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:
>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.
--
"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
>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.
>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.
> 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.