Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Estrarre testo da Word e importarlo in tabella 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

Estrarre testo da Word e importarlo in tabella Excel

Postdi utenteroma » 04/11/15 18:16

Buonasera a tutti,
ho provato a navigare un po' nel sito ma non riesco a trovare la corretta soluzione al mio problema. MI spiego.

Ho un file word con del testo; dovrei impostare un modo (credo una macro, non sono molto esperto) che mi estragga determinate righe di testo e le importi in un file excel prestrutturato. Riporto esempio:
"XY
<descrizione XY>
capitolo XYZ
<descrizione XYZ>
paragrafo XYZ1
<descrizione XYZ1>
"
Vorrei riuscire ad esportare queste informazioni in una tabella excel così strutturata:
colonna 1 colonna 2 colonna 3
XY - <descrizione XY> XYZ - <descrizione XYZ> XYZ1 - <descrizione XYZ1>

Grazie in anticipo per il vostro aiuto.
utenteroma
Newbie
 
Post: 4
Iscritto il: 04/11/15 18:07

Sponsor
 

Re: Estrarre testo da Word e importarlo in tabella Excel

Postdi Anthony47 » 05/11/15 14:40

Ciao utenteroma, benvenuto nel forum.
Per poterti aiutare dovresti pubblicare un file Word dal contenuto realistico e spiegare quali informazioni vuoi prelevare, come sono identificabili, e quale e' la struttura del file excel di destinazione; anzi e' meglio che alleghi anche il file excel.
Per come allegare un file guarda qui: viewtopic.php?f=26&t=103893&p=605487#p605487

Ciao, ti aspettiamo.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Estrarre testo da Word e importarlo in tabella Excel

Postdi utenteroma » 05/11/15 15:11

Grazie mille.

Ho caricato entrambi i template dei file. Il doc lo trovi al seguente indirizzo
http://www.filedropper.com/ilvecchioeilmare000001
Mentre l'excel a questo:
http://www.filedropper.com/ilvecchioeilmare000001_1

Credo che da questi template si possa desumere le info da prelevare, in ogni caso provo a spiegarmi meglio.

Devo fare dei riassunti dettagliati di alcuni libri; il doc deve essere strutturato in quel modo, con codice identificativo per titolo libro, capitolo e paragrafo.
Tali informazioni dovranno poi essere esportate in dei file excel sotto forma di tabella con riportate le info descritte.

Dato che devo farlo anche su alcuni file già realizzati da altre persone (sempre seguendo lo stesso template), per velocizzare il processo ed evitare il copia incolla vorrei sapere se possibile, tramite macro automatizzare il processo. Eventualemente è possibile anche modificare il template di word (non di troppo).

Spero di essermi spiegato meglio, resto a disposizione per qualsiasi chiarimento. Ti ringrazio comunque per la disponibilità e gentilezza di risposta.

Ciao.
utenteroma
Newbie
 
Post: 4
Iscritto il: 04/11/15 18:07

Re: Estrarre testo da Word e importarlo in tabella Excel

Postdi Anthony47 » 05/11/15 23:06

Perdona, ma sinceramente non capisco quali sono nel documento word le parti fisse, che quindi possono essere "cercate", e quali le parti che andrebbero poi copiate.
Di conseguenza anche il file excel, gia' di lettura abbastanza complicata per come e' stato disegnato, mi risulta poco comprensibile.

Sorry
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Estrarre testo da Word e importarlo in tabella Excel

Postdi utenteroma » 06/11/15 11:20

Ho provato ad organizzare meglio i file per cercare di far capire meglio quello che devo fare.

Il word al link:
http://www.filedropper.com/ilvecchioeilmare000001_2

l'excel:
http://www.filedropper.com/ilvecchioeilmare000001_3

Nel doc ci sarà sempre una parte di introduzione generica relativa all'autore, pubblicazione ecc. e poi parte il riassunto del libro diviso in sottolivelli: Titolo--> capitoli--> paragrafi.
Nel file excel io voglio aver copiato i codici relativi a titolo-->capitoli-->paragrafi, mantenendo la divisione gerarchica,e anche il contenuto degli stessi.

Sono stato più chiaro??

Grazie per la disponibilità.
utenteroma
Newbie
 
Post: 4
Iscritto il: 04/11/15 18:07

Re: Estrarre testo da Word e importarlo in tabella Excel

Postdi Anthony47 » 06/11/15 15:47

E' piu' chiaro, ma non e' ancora chiaro quali sono le certezze su cui lavorare...
-Posso assumere che il Riassunto del libro sia nei paragrafi che seguono la riga formattata "Titolo 2"?
-Posso assumere che leggendo l'ultima colonna di ogni tabella trovero' l'esatta indicazione del posizionamento gerarchico di quella informazione? Es Codice 000001.1, Codice 000001.1.1, Codice 000001.1.2, etc?
-Posso assumere che il posizionamento che cosi' trovo e' sequenziale, quindi ad esempio trovero' prima tutti i 1.1.1 /1.1.2 /1.1.3 /1.1.X prima di trovare un 1.2?
-Posso assumere che il file Xls in realta' non esiste ed e' da creare, quanto piu' simile a quello pubblicato? A parte celle unite e formattazione...

E poi, perche' ad esempio la tabella in 1.1.2 “nome Paragrafo 2” – codice 00001.1.2 contiene due righe, ripetendo quindi le informazioni gia' inserite nelle tabella 1.1.1. “Paragrafo 1” – codice 00001.1.1? Posso assumere che in tabelle multilinea solo l'ultima riga e' da prendere in considerazione?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Estrarre testo da Word e importarlo in tabella Excel

Postdi utenteroma » 06/11/15 17:18

Rispondo alle singole domande:
- no, il riassunto sintetico del libro si trova dopo la riga 1. Titolo"il vecchio e il mare" formattato come "titolo 2" (la formattazione può essere cambiata se questo facilita le operazioni).
- sì, va bene questa assunzione.
- sì è corretto.
- è esattamente così, il file che ti ho allegato era un esempio di come volevo il file xls di output.

Avevo pensato di farlo così perché credevo (forse erroneamente) che in questo modo potesse essere più facile e veloce l'estrazione e suddivisione gerarchica per l'excel. In realtà probabilmente è più corretto e semplice pensare che la tabellina con il codice contenga una sola riga e venga suddivisa gerarchicamente dalla macro.

Spero di esserti stato utile con la spiegazione e scusami se non sono chiaro, ma avendo esperienza nulla in tema macro non riesco a capire quali siano le informazioni più importanti.

Per qualsiasi altro chiarimento fammi sapere e ancora grazie mille!!!
utenteroma
Newbie
 
Post: 4
Iscritto il: 04/11/15 18:07

Re: Estrarre testo da Word e importarlo in tabella Excel

Postdi Anthony47 » 09/11/15 18:25

Come temevo, lavorare su un file word scritto praticamente a mano libera porta solo a risultati probabili...
L'aspetto su cui la fantasia dello scrivente e' mortale (dal punto di vista di "programmare" una azione) e' individuare quale e' il testo descrittivo da riportare nel file Excel.
Queste aree non sono contraddistinte da bookmark, ne' hanno una formattazione prevedibile (nell'esempio pubblicato hanno stile o "Normale" oppure "Paragrafo elenco"), ne' ce l'hanno i paragrafi adiacenti, ne' e' nota la spaziatura rispetto alle tabelle (gli elementi certi di facile individuazione).

Ho pertanto ripiegato su questa logica:
-dopo aver individuato una tabella, da cui si preleva il "codice gerarchico" (es Codice 000001.1) e la sua descrizione (es Il mare), il testo descrittivo di quel codice gerarchico sara' individuato dal "primo paragrafo utile" che segue la tabella (nell'esempio: "Il primo capitolo introduce la storia del vecchio pescatore, parlando del suo rapporto con il mare e con Manolin, il ragazzo che era solito aiutarlo").
Se la descrizione si estende su piu' di 1 paragrafo, solo il primo paragrafo verra' prelevato. Un paragrafo termina col tasto Enter; un eventuale Maiusc-Enter invece inserisce un "A capo" e fa continuare il paragrafo sulla riga successiva.

Con questa rilevante limitazione, si potra' usare questa macro:
Codice: Seleziona tutto
Sub WordSummary()
Dim TabNum As Long, I As Long, CLine As Long, NxLine As Long, myDoc As Document
Dim dRan As Range, TData, TRData, NrRows As Long, NrCols As Long, IStyle
Dim XlApp, XlWb

Set myDoc = ActiveDocument
TabNum = myDoc.Tables.Count
Set XlApp = CreateObject("excel.application")
XlApp.Visible = True
Set XlWb = XlApp.Workbooks.Add   'Open("C:\Users\Utente1\Documents\VALLE_PROT.xlsx")      '<<< Il vero percorso del file XL

For I = 1 To TabNum
    With myDoc.Tables(I)
        Set dRan = .ConvertToText(Separator:=vbTab, _
        NestedTables:=False)
       
        TData = dRan.Text
        'Restore:
        myDoc.Undo
        'Cerca ultima riga & ultima cella:
        TData = Mid(TData, 1, Len(TData) - 1)
        RData = Split(TData, vbCr)
        NrRows = UBound(RData, 1)     'UBOUND delle righe
        TRData = Split(RData(NrRows), vbTab, , vbBinaryCompare)
        NrCols = UBound(TRData)
        If NrCols > 0 Then
'        crow = Selection.Information(wdFirstCharacterLineNumber)
        Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdMove
        IStyle = Selection.Style
        Do
            Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
            If Len(Selection.Text) > 5 Then Exit Do
        Loop
            mytag = TRData(NrCols)
            mytext = TRData(NrCols - 1)
            mylev = Len(mytag) - Len(Replace(mytag, ".", "", , , vbBinaryCompare))
            mynext = NextR(XlWb.sheets(1), 6)
            XlWb.sheets(1).Cells(mynext, 2 + 2 * mylev).Value = mytag & Chr(10) & Chr(10) & Selection.Text
            XlWb.sheets(1).Cells(mynext, 1 + 2 * mylev).Value = mytext
           
        End If
    End With
Next I
'
Set XlApp = Nothing
MsgBox ("Completato..." & vbCrLf & "Formattare il file Excel e salvarlo")
End Sub

Function NextR(xxSh, xxCol) As Long
Dim myN As Long
On Error Resume Next
myN = xxSh.Cells(10000, xxCol).End(-4162).Row
On Error GoTo 0
NextR = myN + 1
End Function


Mettila in un file word vuoto:
-dal file word, premi Alt-F11 per aprire l'editor delle macro
-seleziona il documento corrente nel frame di sinistra intitolato Progetto - Project
-Menu /Inserisci /Modulo
-copia il codice e incollalo nel frame vuoto del modulo appena inserito.
-chiudi e torna al documento Word
-eventualmente scrivi nel documento le istruzioni di uso.
-salvare il file in formato ".xlsm"

Istruzioni d'uso:
-chiudere eventuali sessioni Excel al momento aperte (non e' obbligatorio, la macro crea comunque una sua sessione di Excel in cui crea e compila un nuovo file Excel)
-aprire il documento da "sintetizzare" e lasciarlo attivo
-avviare la macro WordSummary: premere Alt-F8, selezionare WordSummary dall'elenco di macro disponibili, premere Esegui.
-un messaggio informera' del completamento dell'operazione
-attivare il documento Excel, formattare le celle a piacere; controllare l'esito confrontando a campione col file Word; salvare il file Excel e chiudere il file Word sintetizzato.

Fai sapere...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Estrarre testo da Word e importarlo in tabella Excel":


Chi c’è in linea

Visitano il forum: patel e 45 ospiti