COPIARE DATI TABELLA DA EXCEL A WORD
Hai un problema con Excel?
COPIARE DATI TABELLA DA EXCEL A WORD
di phoenix11 (utente non iscritto) data: 07/08/2017 10:06:38
Ciao a tutti,
sto copiando dei dati da celle di excel su word. Utilizzo il seguente metodo: su un file .docx ho creato dei segnalibri che il cui valore corrisponde ad una determinata cella di excel.
Avrei esigenza però di incollare i valori presenti su più tabelle excel sulla corrispondenti del documento word . Queste tabelle possono variare in numero di righe ma le colonne rimangono fisse ( la prima riga è di intestazione).
Non so se è possibile allegare i documenti nel frattempo posto il codice di partenza (ho commentato le parti non necessarie al momento)
Spero di essere stato chiaro, ringrazio anticipatamente dell'aiuto!
Public Sub Macro()
On Error GoTo RigaErrore
Dim objWord As Object
Dim objDoc As Object
Dim oExcel As Object
Dim oSheet As Object
Dim sPath As String
Dim sNomeFile As String
Dim sh As Worksheet
Dim lRiga As Long
Dim lng As Long
Set sh = ThisWorkbook.Worksheets(ActiveSheet.Name)
sPath = "C:Prova"
sNomeFile = "Master.docx"
With sh
lRiga = .Range("K" & .Rows.Count).End(xlUp).Row
Set objWord = CreateObject("Word.Application")
'Set objExcel = CreateObject("Excel.Application")
For lng = 2 To lRiga
If Dir(sPath) <> "" Then
Set objDoc = objWord.Documents.Open(sPath & sNomeFile)
objDoc.Bookmarks("Uno").Range.Text = .Range("A" & lng).Value
If Dir(sPath & .Range("K" & lng).Value & "-" & .Range("O" & lng).Value & ".docx") <> "" Then
MsgBox "File exist."
Else
objDoc.SaveAs (sPath & .Range("A" & lng).Value & ".docx")
'Range("Q" & lng).Value = (sPath & .Range("K" & lng).Value & "-" & .Range("O" & lng).Value & ".docx")
'MsgBox (sPath & .Range("K" & lng).Value & "-" & .Range("B" & lng).Value & ".docx")
'MsgBox lng
'MsgBox ActiveSheet.Name
objWord.Visible = True
objDoc.Close
Set objDoc = Nothing
End If
End If
Next
End With
RigaChiusura:
If Not objWord Is Nothing Then
objWord.Quit
Set objWord = Nothing
End If
Exit Sub
RigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaChiusura
End Sub
|
di phoenix11 data: 07/08/2017 10:29:20
Ho allegato i file
di phoenix11 data: 07/08/2017 14:44:00
di Vecchio Frac data: 07/08/2017 15:13:51
Ecco, adesso che ho un momento libero do un'occhiata al tuo problema :)
di Vecchio Frac data: 07/08/2017 15:27:55
cit. "Spero di essere stato chiaro"
---> Non moltissimo, ti chiederei un esempio pratico del risultato da raggiungere.
Anzitutto nel file docx non ci sono "dei" segnalibri ma solo "un" segnalibro.
Nei file di esempio allegati non capisco quali e dove sono "i valori presenti su più tabelle excel " da riportare "sulla corrispondenti del documento word" (corrispondenti cosa? tabelle o celle?).
Fai un esempio pratico sulla base dei dati allegati:
-ho questa tabella dati
-voglio questo risultato in Word
Hai mostrato un codice: non funziona come ti aspetti?
di phoenix11 data: 07/08/2017 15:47:29
Ciao Vecchio Frac,
ho messo un solo segnalibro per semplificare il documento. Il codice che ho postato funziona ma mi servirebbe integrarlo appunto copiando i valori della tabella excel nella tabella word.
La tabella di riferimento è compresa tra gli intervalli E:G; ne ho messa una sola sempre per semplificare ma se è un problema ne aggiungo altre. Ti allego il documento di "output.docx" che riassume quanto detto e forse è più esplicativo
Grazie intanto
di Albatros54 data: 07/08/2017 16:00:01
Tempo fa, mi sono posto questo problema, dovevo stampare un database di Excel in una tabella di word.
Ma non potevo stampare direttamente da excel?No!! troppo semplice.
Ho crato un documento in word ed ho inserito una tabella, formata da una riga e da tante colonne, quanto erano le colonne del mio Database in Excel.
Ad ogni cella della tabella ho inserito il nome delle colonna del mio Database.
Ho dato un nome al documento di Word è lo salvato,questo sara il master della stampa.
Ho aperto il mio file di Excel, HO MESSO IN VBA IL RIFERIEMENTO ALLA LIBRERIA MICROSOFT WORD 12.0 OBJECT LIBRARY, e in un modulo ho inserito il codice che ti posto, il tutto funziona in Excel 2007.
Sia il documento master di Word che il file di Excel debbono essere nella stessa Dir.
Ciao
albatros54
P.S. comunque ti ho allegato i file
Public Sub ProvatabellaWord()
Dim tbl As Table
Dim s As String
Dim primaCella As String
Dim nomef As String
primaCella = "Nome"
sPath = ThisWorkbook.Path & ""
Set myws = ActiveSheet
Set Word = CreateObject("Word.Application")
Word.Visible = True
Set DOC = Word.Documents.Open(sPath & "Master.docx")
With DOC
r = 1
For Each tbl In Word.ActiveDocument.Tables
s = tbl.Rows(1).Cells(1).Range.Text
If InStr(1, s, primaCella) Then
v = myws.Cells(r, 1).Value
While v <> ""
If v = primaCella Then
r = r + 1
c = 1
Do While myws.Cells(r, c).Text <> ""
tbl.Rows.Add
Set newrow = tbl.Rows(tbl.Rows.Count)
Do While myws.Cells(r, c).Text <> ""
cellValue = myws.Cells(r, c).Text
newrow.Cells(c).Range.Text = cellValue
With newrow.Range.Font
.Italic = True
.Bold = False
.Name = "Arial"
.Size = 12
End With
c = c + 1
Loop
r = r + 1
c = 1
Loop
End If
r = r + 1
v = myws.Cells(r, 1).Value
Wend
End If
nomefile = tbl.Rows(2).Cells(1).Range.Text
nomefileb = Len(nomefile)
' nomef = Left(nomefile, (nomefileb - 2))
Next tbl
nomef = InputBox("Salva con Nome ", "Albatros54")
If (nomef = "" And vbOK) Then
nomef = Left(nomefile, (nomefileb - 2))
End If
If Dir(sPath & nomef & ".docx") <> "" Then
Kill (sPath & nomef & ".docx")
End If
.SaveAs (sPath & nomef & ".docx")
.Close
End With
Word.Quit
Set DOC = Nothing
Set Word = Nothing
End Sub
|
di phoenix11 data: 07/08/2017 16:11:55
Ciao Albatros,
si il concetto è proprio questo però dovrei integrarlo al mio codice e poterlo replicare per più tabelle all'interno del documento. Inoltre dovrei mantenere il formato di destinazione della tabella word.
Nel frattempo grazie per l'interesse!
di Albatros54 data: 07/08/2017 18:32:03
di phoenix11 data: 08/08/2017 09:24:14
Se guardi l'allegato di output vedrai il risultato che spero di ottenere. I dati che sono nella tabella excel devono essere riportati nella tabella word. Il risultato avrei poi bisogno di integralo al mio codice
Questo processo deve poter essere replicato per eventuali n tabelle.
di phoenix11 data: 09/08/2017 09:43:15
Qualcuno ha idee?
Vuoi Approfondire?