Discussione:
copiare dati da excel a word
(troppo vecchio per rispondere)
Luca
2007-05-22 16:31:39 UTC
Permalink
Ciao a tutti,
vi sottopongo il mio problema.

La mia necessità è quella di copiare dei dati da un foglio di excel e
incollarli in un foglio di word già precompilato.
Ho fatto un po' di ricerche nel newsgroup e ho trovato un'interessante
soluzione proposta da Norman ( thread "macro da excel in word" del 09/04/07)
di cui posterò il codice alla fine del post.

Il codice funziona alla grande, ma vorrei chiedere se ci sono altre
soluzioni a riguardo, per 2 motivi :

1 - i dati che devo copiaree incollare sono parecchi, quindi dovrei inserire
parecchi segnalibri nel modello di Word ( non che la cosa mi spaventi!)
2 - i dati che vengono incollati in word sono sottoforma di tabella e vanno
a modificare tutta l'impaginazione del foglio. Esiste la possibilità di
incollarli come semplice testo?

Spero di aver descritto chiaramente il problema.
Grazie per i preziosi suggerimenti.

Luca
------------------------------------
Public Sub Tester()
'\\ Inserisci un riferimento alla libreria
'\\"Microsoft Word 10 Object Library"

Dim WB As Workbook
Dim SH As Worksheet
Dim srcRng As Range
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim Rng As Object
Dim bkMark As Bookmark
Dim bkMarks As Bookmarks
Dim arr As Variant
Const sPath As String = "C:\Data\" '<<=== da CAMBIARE
Const myFile As String = "Pippo2.doc" '<<=== da CAMBIARE

Set WB = Workbooks("pippo.xls")
Set SH = WB.Sheets("Scorte")
Set srcRng = SH.Range("A1")
Set wdApp = New Word.Application
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open(sPath & myFile)
Set bkMark = wdDoc.Bookmarks("Pluto") '<<== da CAMBIARE
Set Rng = bkMark.Range
srcRng.Copy
Rng.Paste

With wdDoc
.SaveAs Filename:=sPath & sStr & ".doc"
.Close
End With

wdApp.Quit

' Clean up
Set Rng = Nothing
Set bkMark = Nothing
Set bkMarks = Nothing
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub
'<<=============

Per utilizzare questa routine:

Alt-F11 per aprire l'Editor di VBA
Menu | Inserisci | Modulo
Incolla il suddetto codice
Alt-F11 per tornare in Excel
Alt-F8
Seleziona "Tester"
Esegui

Prima di esegiure la macro, devi inserire un
riferimento alla libreria:

'"Microsoft Word xx Object Library"

Alt-F11 per aprire l'editor di VBA
Menu | Strumenti | Riferimenti
Norman Jones
2007-05-22 16:45:19 UTC
Permalink
Ciao Luca,

'-----------------
La mia necessità è quella di copiare dei dati da un foglio di excel e
incollarli in un foglio di word già precompilato.
Ho fatto un po' di ricerche nel newsgroup e ho trovato un'interessante
soluzione proposta da Norman ( thread "macro da excel in word" del 09/04/07)
di cui posterò il codice alla fine del post.

Il codice funziona alla grande, ma vorrei chiedere se ci sono altre
soluzioni a riguardo, per 2 motivi :

1 - i dati che devo copiaree incollare sono parecchi, quindi dovrei inserire
parecchi segnalibri nel modello di Word ( non che la cosa mi spaventi!)
2 - i dati che vengono incollati in word sono sottoforma di tabella e vanno
a modificare tutta l'impaginazione del foglio. Esiste la possibilità di
incollarli come semplice testo?
[...]
'-----------------

Il motivo per l'uso dei segnalibri era per
individuare il punti di inserimento dei dati,

Dove dovrebbero essere inserite le tue
tabelle?


---
Regards,
Norman
Microsoft Excel MVP
Luca
2007-05-22 17:33:10 UTC
Permalink
Post by Norman Jones
Ciao Luca,
'-----------------
La mia necessità è quella di copiare dei dati da un foglio di excel e
incollarli in un foglio di word già precompilato.
Ho fatto un po' di ricerche nel newsgroup e ho trovato un'interessante
soluzione proposta da Norman ( thread "macro da excel in word" del 09/04/07)
di cui posterò il codice alla fine del post.
Il codice funziona alla grande, ma vorrei chiedere se ci sono altre
1 - i dati che devo copiaree incollare sono parecchi, quindi dovrei inserire
parecchi segnalibri nel modello di Word ( non che la cosa mi spaventi!)
2 - i dati che vengono incollati in word sono sottoforma di tabella e vanno
a modificare tutta l'impaginazione del foglio. Esiste la possibilità di
incollarli come semplice testo?
[...]
'-----------------
Il motivo per l'uso dei segnalibri era per
individuare il punti di inserimento dei dati,
Dove dovrebbero essere inserite le tue
tabelle?
Ciao Norman,
l'uso dei segnalibri per me è ottimo, visto che anch'io devo individuare il
punto di inserimento dei dati.
Quando però vado ad inserirlo, lo prende come tabella ( il dato che
inserisco è il semplice contenuto di una cella).
Io vorrei che me lo inserisse come semplice testo.
E' possibile?
giovanna
2007-05-22 17:55:37 UTC
Permalink
Post by Luca
l'uso dei segnalibri per me è ottimo, visto che anch'io devo individuare il
punto di inserimento dei dati.
Quando però vado ad inserirlo, lo prende come tabella ( il dato che
inserisco è il semplice contenuto di una cella).
Io vorrei che me lo inserisse come semplice testo.
Luca, non so la butto là...
e una volta copiati i dati su Word, selezionare la tabella,
quindi Menu Tabella >converti :: tabella in testo ?
Puoi scegliere come separare il testo...
--
ciao
giovanna
.......................
www.riolab.org
.........................
Luca
2007-05-23 05:40:13 UTC
Permalink
Post by giovanna
Post by Luca
l'uso dei segnalibri per me è ottimo, visto che anch'io devo individuare il
punto di inserimento dei dati.
Quando però vado ad inserirlo, lo prende come tabella ( il dato che
inserisco è il semplice contenuto di una cella).
Io vorrei che me lo inserisse come semplice testo.
Luca, non so la butto là...
e una volta copiati i dati su Word, selezionare la tabella,
quindi Menu Tabella >converti :: tabella in testo ?
Puoi scegliere come separare il testo...
Ciao Giovanna,
ho provato a convertire la tabella in testo...però rimane sempre il problema
dell'impaginazione,
visto che devo sempre sistemare manualmente il testo.
Norman Jones
2007-05-23 05:57:01 UTC
Permalink
Ciao Luca,

'------------------
l'uso dei segnalibri per me è ottimo, visto che anch'io devo individuare il
punto di inserimento dei dati.
Quando però vado ad inserirlo, lo prende come tabella ( il dato che
inserisco è il semplice contenuto di una cella).
Io vorrei che me lo inserisse come semplice testo.
E' possibile?
'------------------

Prova qualcosa del genere:

'=============>>
Public Sub Tester2()
'\\ Inserisci un riferimento alla libreria
'\\"Microsoft Word 10 Object Library"

Dim WB As Workbook
Dim SH As Worksheet
Dim srcRng As Range
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim Rng As Object
Dim bkMark As Bookmark
Dim bkMarks As Bookmarks
Dim arr As Variant
Const sPath As String = "C:\Data\" '<<=== da CAMBIARE
Const myFile As String = "Pippo2.doc" '<<=== da CAMBIARE

Set WB = Workbooks("Pippo.xls") '<<=== da CAMBIARE
Set SH = WB.Sheets("Foglio1") '<<=== da CAMBIARE
Set srcRng = SH.Range("A1")
Set wdApp = New Word.Application
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open(sPath & myFile)
Set bkMark = wdDoc.Bookmarks("Pluto") '<<== da CAMBIARE
Set Rng = bkMark.Range
srcRng.Copy
Rng.PasteSpecial Link:=False, _
DataType:=wdPasteText, _
Placement:=wdInLine, _
DisplayAsIcon:=False
With wdDoc
.SaveAs Filename:=sPath & sStr & ".doc"
.Close
End With

wdApp.Quit

' Clean up
Set Rng = Nothing
Set bkMark = Nothing
Set bkMarks = Nothing
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub
'<<=============


---
Regards,
Norman
Microsoft Excel MVP
Norman Jones
2007-05-23 06:23:27 UTC
Permalink
Ciao Luca,

Visto che tu hai molte tabelle da copiare,
prova la seguente versione:

'=============>>
Public Sub Tester2()
'\\ Inserisci un riferimento alla libreria
'\\"Microsoft Word 10 Object Library"

Dim WB As Workbook
Dim SH As Worksheet
Dim srcRng As Range
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim Rng As Object
Dim bkMark As Bookmark
Dim bkMarks As Bookmarks
Dim ArrTabelle As Variant
Dim ArrSegnaLibri As Variant
Dim i As Long
Const sPath As String = "C:\Data\" '<<=== da CAMBIARE
Const myFile As String = "Pippo2.doc" '<<=== da CAMBIARE

Set WB = Workbooks("Pippo.xls") '<<=== da CAMBIARE
Set SH = WB.Sheets("Foglio1") '<<=== da CAMBIARE
ArrTabelle = VBA.Array( _
"Tabella1", "Tabella2", _
"Tabella3", "Tabella4", _
"Tabella5") '<<=== da CAMBIARE
ArrSegnaLibri = VBA.Array("SL1", "SL2", "SL3", _
"SL4", "SL5") '<<=== da CAMBIARE

Set wdApp = New Word.Application
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open(sPath & myFile)

For i = LBound(ArrTabelle) To UBound(ArrTabelle)
Set srcRng = SH.Range(ArrTabelle(i))
Set bkMark = wdDoc.Bookmarks(ArrSegnaLibri(i))
Set Rng = bkMark.Range
srcRng.Copy
Rng.PasteSpecial Link:=False, _
DataType:=wdPasteText, _
Placement:=wdInLine, _
DisplayAsIcon:=False
Next i
With wdDoc
.SaveAs Filename:=sPath & sStr & ".doc"
.Close
End With

wdApp.Quit

' Clean up
Set Rng = Nothing
Set bkMark = Nothing
Set bkMarks = Nothing
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub
'<<=============


---
Regards,
Norman
Microsoft Excel MVP
Luca
2007-05-23 13:59:08 UTC
Permalink
Post by Norman Jones
Public Sub Tester2()
'\\ Inserisci un riferimento alla libreria
'\\"Microsoft Word 10 Object Library"
Dim WB As Workbook
Dim SH As Worksheet
Dim srcRng As Range
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim Rng As Object
Dim bkMark As Bookmark
Dim bkMarks As Bookmarks
Dim ArrTabelle As Variant
Dim ArrSegnaLibri As Variant
Dim i As Long
Const sPath As String = "C:\Data\" '<<=== da CAMBIARE
Const myFile As String = "Pippo2.doc" '<<=== da CAMBIARE
Set WB = Workbooks("Pippo.xls") '<<=== da CAMBIARE
Set SH = WB.Sheets("Foglio1") '<<=== da CAMBIARE
ArrTabelle = VBA.Array( _
"Tabella1", "Tabella2", _
"Tabella3", "Tabella4", _
"Tabella5") '<<=== da CAMBIARE
ArrSegnaLibri = VBA.Array("SL1", "SL2", "SL3", _
"SL4", "SL5") '<<=== da CAMBIARE
Set wdApp = New Word.Application
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open(sPath & myFile)
For i = LBound(ArrTabelle) To UBound(ArrTabelle)
Set srcRng = SH.Range(ArrTabelle(i))
Set bkMark = wdDoc.Bookmarks(ArrSegnaLibri(i))
Set Rng = bkMark.Range
srcRng.Copy
Rng.PasteSpecial Link:=False, _
DataType:=wdPasteText, _
Placement:=wdInLine, _
DisplayAsIcon:=False
Next i
With wdDoc
.SaveAs Filename:=sPath & sStr & ".doc"
.Close
End With
wdApp.Quit
' Clean up
Set Rng = Nothing
Set bkMark = Nothing
Set bkMarks = Nothing
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub
'<<=============
Ciao Norman,
scusa se rispondo con ritardo ma ho avuto modo di metter mano al codice solo
ora.

Dire che sei un mito è dir poco!!
Funziona alla grande, ed è esattamente ciò di cui avevo bisogno.
I dati vengono importati come semplice testo, quindi posso compilare il
modello
in word senza più preoccuparmi dell'impaginazione.
Grazie ancora.
Luca

Loading...