Discussione:
Leggere file di word.
(troppo vecchio per rispondere)
Giovanni
2007-12-27 22:11:52 UTC
Permalink
Un saluto a tutti.
Ho la necessita di leggere da VBA un file di word che contiene dati
formattati da importare poi in una tabella. Da dove parto? Link di esempio?
Codice di Esempio? Ogni suggerimento è ben accetto.
Grazie e ciao
Giovanni
maurizio
2007-12-28 16:14:01 UTC
Permalink
ciao
se sono formattati come nei vecchi tabulati (incolonnati o delimitati)
salvali come file di testo (solo i dati) e poi leggili in VBA spezzettando le
colonne
Maurizio
Post by Giovanni
Un saluto a tutti.
Ho la necessita di leggere da VBA un file di word che contiene dati
formattati da importare poi in una tabella. Da dove parto? Link di esempio?
Codice di Esempio? Ogni suggerimento ben accetto.
Grazie e ciao
Giovanni
Giovanni
2007-12-28 16:48:30 UTC
Permalink
Ciao Maurizio
Post by maurizio
ciao
se sono formattati come nei vecchi tabulati (incolonnati o delimitati)
Si + o - sono così.
Post by maurizio
salvali come file di testo (solo i dati) e poi leggili in VBA spezzettando le
colonne
I file vengono ricevuti via e-mail e vorrei evitare altri passaggi, volevo
capire se è possibile recuperare i dati direttamente dal doc. Avevo pensato
anche io a ciò che mi suggerisci, ma vorrei evitare il passaggio, ovviamente
se è possibile.
Grazie e ciao
Giovanni
maurizio
2007-12-28 17:17:01 UTC
Permalink
siccome mi sembra che devi almeno aprire a mano il doc nella mail; a questo
punto ctrl+5[tn] (seleziona tutto), copia, incolla in un bel campo memo di
comodo (ti porti il testo e gli aCapo) e ti analizzi il ontenuto del memo
come fosse un file txt
ho detto una grossa stupidaggine?
ciao e auguri
maurizio
Post by Giovanni
Ciao Maurizio
Post by maurizio
ciao
se sono formattati come nei vecchi tabulati (incolonnati o delimitati)
Si + o - sono così.
Post by maurizio
salvali come file di testo (solo i dati) e poi leggili in VBA spezzettando le
colonne
I file vengono ricevuti via e-mail e vorrei evitare altri passaggi, volevo
capire se è possibile recuperare i dati direttamente dal doc. Avevo pensato
anche io a ciò che mi suggerisci, ma vorrei evitare il passaggio, ovviamente
se è possibile.
Grazie e ciao
Giovanni
Giovanni
2007-12-28 18:59:05 UTC
Permalink
Ciao Maurizio.
Post by maurizio
siccome mi sembra che devi almeno aprire a mano il doc nella mail; a questo
punto ctrl+5[tn] (seleziona tutto), copia, incolla in un bel campo memo di
comodo (ti porti il testo e gli aCapo) e ti analizzi il ontenuto del memo
come fosse un file txt
ho detto una grossa stupidaggine?
+ o - si :-)), nel senso che nel mio caso sono 80 pagine ma potrebbero
essere anche di più.
Post by maurizio
ciao e auguri
Ciao e auguri anche a te.
Post by maurizio
maurizio
Giovanni
PS: proverò con VSTO, ho trovato qualche info.
giorgio rancati
2007-12-28 21:02:29 UTC
Permalink
Post by Giovanni
Un saluto a tutti.
Ho la necessita di leggere da VBA un file di word che contiene dati
formattati da importare poi in una tabella. Da dove parto? Link di
esempio? Codice di Esempio? Ogni suggerimento è ben accetto.
Grazie e ciao
Giovanni
Ciao Giovanni,

vedi se può essere d'aiuto
----
Dim WordApp As Object 'Oggetto Word

'Istanzio Word
Set WordApp = CreateObject("Word.Application")

'Apro il documento
WordApp.Documents.Open "C:\Dati\Documento1.Doc"

'Stampo il testo nella finestra immediata di Access
Debug.Print WordApp.Documents(1).Range

'Chiudo il documento
WordApp.Documents(1).Close

'Chiudo Word
WordApp.Quit

'Distruggo l'oggetto Word
Set WordApp = Nothing
----

Ciao
--
Giorgio Rancati
[Office Access MVP]
Giovanni
2007-12-28 22:31:04 UTC
Permalink
Ciao Giorgio.
Post by giorgio rancati
Post by Giovanni
Un saluto a tutti.
Ho la necessita di leggere da VBA un file di word che contiene dati
formattati da importare poi in una tabella. Da dove parto? Link di
esempio? Codice di Esempio? Ogni suggerimento è ben accetto.
Grazie e ciao
Giovanni
Ciao Giovanni,
vedi se può essere d'aiuto
----
Dim WordApp As Object 'Oggetto Word
'Istanzio Word
Set WordApp = CreateObject("Word.Application")
'Apro il documento
WordApp.Documents.Open "C:\Dati\Documento1.Doc"
'Stampo il testo nella finestra immediata di Access
Debug.Print WordApp.Documents(1).Range
Mi sembra di capire, da quanto dici e dalle info racimolate in internet, che
non ci sono alternative al range per leggere un file di word.
Io ho la necessita di leggere riga per riga e in base al contenuto della
stessa di prendere determinati dati e metterli in una tabella. L'alternativa
che ho trovato per ora è di salvare il file in txt con le interruzioni di
riga e da li procedere con l'elaborazione.
Grazie e ciao
Giovanni
giorgio rancati
2007-12-29 01:03:31 UTC
Permalink
Post by Giovanni
Post by giorgio rancati
'Stampo il testo nella finestra immediata di Access
Debug.Print WordApp.Documents(1).Range
Mi sembra di capire, da quanto dici e dalle info racimolate in internet,
che non ci sono alternative al range per leggere un file di word.
Io ho la necessita di leggere riga per riga e in base al contenuto della
stessa di prendere determinati dati e metterli in una tabella.
L'alternativa che ho trovato per ora è di salvare il file in txt con le
interruzioni di riga e da li procedere con l'elaborazione.
nel post originale avevi chiesto come leggere un file di word :-)
poi se hai la necessità di dividerlo in righe e per righe si intendono
elementi separati dal ritorno a capo, allora puoi fare così
----
Sub LeggiWord()

Dim Righe As Variant
Dim Riga As Variant

Dim WordApp As Object 'Oggetto Word

'Istanzio Word
Set WordApp = CreateObject("Word.Application")

'Apro il documento
WordApp.Documents.Open "C:\Dati\Documento1.Doc"

'Stampo ogni singola riga
Righe = Split(WordApp.Documents(1).Range, vbCrLf)
For Each Riga In Righe
Debug.Print Riga
Next

'Chiudo il documento
WordApp.Documents(1).Close

'Chiudo Word
WordApp.Quit

'Distruggo l'oggetto Word
Set WordApp = Nothing

End Sub
----

potrebbe darsi che anche questo suggerimento non si adatti al caso ma con le
poche informazioni ricevute non mi viene in mente altro.
:-)
--
Giorgio Rancati
[Office Access MVP]
Giovanni
2007-12-29 17:34:03 UTC
Permalink
Ciao Giorgio
Post by giorgio rancati
nel post originale avevi chiesto come leggere un file di word :-)
Si, in effetti non sono stato molto chiaro.
Post by giorgio rancati
poi se hai la necessità di dividerlo in righe e per righe si intendono
elementi separati dal ritorno a capo, allora puoi fare così
----
Sub LeggiWord()
Dim Righe As Variant
Dim Riga As Variant
Dim WordApp As Object 'Oggetto Word
'Istanzio Word
Set WordApp = CreateObject("Word.Application")
'Apro il documento
WordApp.Documents.Open "C:\Dati\Documento1.Doc"
'Stampo ogni singola riga
Righe = Split(WordApp.Documents(1).Range, vbCrLf)
For Each Riga In Righe
Debug.Print Riga
Next
'Chiudo il documento
WordApp.Documents(1).Close
'Chiudo Word
WordApp.Quit
'Distruggo l'oggetto Word
Set WordApp = Nothing
End Sub
----
potrebbe darsi che anche questo suggerimento non si adatti al caso ma con
le poche informazioni ricevute non mi viene in mente altro.
Quasi ci siamo, nonostante le poche info hai centrato il bersaglio.
L'attuale doc su cui faccio le prove ha 81pagine e testando paso passo il
codice che hai postato nella finestra immediata mi viene stampato in blocco
il contenuto delle ultime tre pagine, difatti nel ciclo For Each ci passa
solo una volta. Aprendo il doc e osservando nella finestra di dialogo
"Conteggio parole", mi segnala 5.159 righe. Che succede?
Grazie e ciao
Giovanni
giorgio rancati
2007-12-29 18:14:52 UTC
Permalink
Post by Giovanni
Post by giorgio rancati
potrebbe darsi che anche questo suggerimento non si adatti al caso ma con
le poche informazioni ricevute non mi viene in mente altro.
Quasi ci siamo, nonostante le poche info hai centrato il bersaglio.
L'attuale doc su cui faccio le prove ha 81pagine e testando paso passo il
codice che hai postato nella finestra immediata mi viene stampato in
blocco il contenuto delle ultime tre pagine, difatti nel ciclo For Each ci
passa solo una volta. Aprendo il doc e osservando nella finestra di
dialogo "Conteggio parole", mi segnala 5.159 righe. Che succede?
Grazie e ciao
Giovanni
ok, non avevo considerato che in Word il separatore di riga non è lo stesso
di Access.

cambia così questa parte
----
'Stampo ogni singola riga
Righe = Split(WordApp.Documents(1).Range, vbCr)

MsgBox "Numero Righe " + Str(UBound(Righe))

For Each Riga In Righe
Debug.Print i, Riga
Next
----

ps. la finestra immediata ha una capacità limitata quindi non ti aspettare
di vedere in essa tutto il testo.

:-)
--
Giorgio Rancati
[Office Access MVP]
giorgio rancati
2007-12-29 19:15:07 UTC
Permalink
"giorgio rancati" <***@tiscali.it> ha scritto nel
messaggio news:***@TK2MSFTNGP04.phx.gbl...

piccola rettifica, così vedi scorrere il numero della riga stampata
----
'Stampo ogni singola riga
Righe = Split(WordApp.Documents(1).Range, vbCr)
MsgBox "Numero Righe " + Str(UBound(Righe) + 1)
Dim i As Long
For Each Riga In Righe
i = i + 1
Debug.Print i, Riga
Next
----

Ciao
--
Giorgio Rancati
[Office Access MVP]
Giovanni
2007-12-29 21:00:45 UTC
Permalink
Post by giorgio rancati
piccola rettifica, così vedi scorrere il numero della riga stampata
----
'Stampo ogni singola riga
Righe = Split(WordApp.Documents(1).Range, vbCr)
MsgBox "Numero Righe " + Str(UBound(Righe) + 1)
Dim i As Long
For Each Riga In Righe
i = i + 1
Debug.Print i, Riga
Next
Adesso si che è un'opera d'arte, vedi sotto (un copia e incolla terra
terra):
74
.-----------------------------------------------.--------.--------.--------.--------.--------.--------.--------.--------.---------
75 : Cod.Articolo Oper / Descrizione : :
76 : : 151207 : 311207 :
150108 : 210108 : 310108 : 290208 : 310308 : 300408 : Oltre : Totale
77
:-----------------------------------------------:--------:--------:--------:--------:--------:--------:--------:--------:---------
78 : 01.0837.0130 Ord. Z7 030104 : : :
: : : : : :
79 : INVOLUCRO TERM. C/SERIGR. E ANELLO : : :
: : : : : : :
80 : In rit. al 15/12/07 1016,00 Conf.: : :
: : : : : : : 1016
81 : Prev.: : :
: : : : : : :
82 : Ricevuto 6198,00 Prog.: 7214 : 7214 :
7214 : 7214 : 7214 : 7214 : 7214 : 7214 : 7214 : 7214
83 : : : :
: Ultima bolla di consegna: 000732 del 30/11/07 :
84 ----------------------------------------------------------------------------------------------------------------------------------
Grazie infinite, ora proverò, credo di riuscirci, a recuperare i dati che mi
interessano.
Ciao e buon anno
Giovanni
PS tieni monitorato il thread qualora avessi prb. :-))

Continua a leggere su narkive:
Loading...